[PR #50] [MERGED] feat(cli): support sandbox file and directory transfers #139

Closed
opened 2026-10-29 14:20:07 +00:00 by bsakaguchi · 0 comments
Owner

📋 Pull Request Information

Original PR: https://github.com/kvcache-ai/AgentENV/pull/50
Author: @LSX-s-Software
Created: 7/28/2026
Status: ✅ Merged
Merged: 7/29/2026
Merged by: @yingdi-shan

Base: main ← Head: feat/upload-download


📝 Commits (3)

  • e61f3f4 feat(cli): support upload/download files from/to a sandbox
  • 7c31307 feat(cli): support directory upload/download
  • c22f630 feat(cli): add progress bar for upload/download

📊 Changes

11 files changed (+1626 additions, -12 deletions)

View changed files

📝 Cargo.lock (+4 -0)
📝 crates/aenv/Cargo.toml (+6 -2)
➕ crates/aenv/src/client/files.rs (+335 -0)
📝 crates/aenv/src/client/mod.rs (+1 -0)
➕ crates/aenv/src/commands/download.rs (+641 -0)
📝 crates/aenv/src/commands/mod.rs (+2 -0)
➕ crates/aenv/src/commands/upload.rs (+374 -0)
📝 crates/aenv/src/grpc/mod.rs (+132 -9)
📝 crates/aenv/src/main.rs (+7 -0)
➕ crates/aenv/src/progress.rs (+67 -0)
📝 docs/src/getting-started/aenv-cli.md (+57 -1)

📄 Description

Summary

  • add aenv upload and aenv download commands for transferring files through envd
  • support recursive directory upload/download with cp-style destination resolution, hidden files, empty directories, conflict protection, and --force
  • add TTY-aware aggregate progress bars for file and directory transfers
  • route envd filesystem Connect RPCs through the existing sandbox proxy for stat/list/mkdir operations
  • document path behavior, --user restrictions, and metadata preservation limitations

Behavior

  • single-file transfers support relative host paths and existing envd --user semantics
  • directory transfers require absolute remote paths and reject --user
  • symlinks and special files are rejected
  • directory downloads merge into existing directories; conflicting files require --force
  • ownership, permissions, timestamps, ACLs, xattrs, and hard-link relationships are not preserved

Testing

  • cargo test -p aenv (39 tests)
  • cargo clippy -p aenv --all-targets -- -D warnings
  • make fmt
  • git diff --check
  • real envd 0.5.13 file and recursive directory upload/download validation, including nested files, hidden files, empty directories, conflict handling, and byte-for-byte hash comparison

🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.

## 📋 Pull Request Information **Original PR:** https://github.com/kvcache-ai/AgentENV/pull/50 **Author:** [@LSX-s-Software](https://github.com/LSX-s-Software) **Created:** 7/28/2026 **Status:** ✅ Merged **Merged:** 7/29/2026 **Merged by:** [@yingdi-shan](https://github.com/yingdi-shan) **Base:** `main` ← **Head:** `feat/upload-download` --- ### 📝 Commits (3) - [`e61f3f4`](https://github.com/kvcache-ai/AgentENV/commit/e61f3f4637c49c9e619b3f26e92fbff6550847fc) feat(cli): support upload/download files from/to a sandbox - [`7c31307`](https://github.com/kvcache-ai/AgentENV/commit/7c313079490af6aa6f2497784893f7b61c7c6129) feat(cli): support directory upload/download - [`c22f630`](https://github.com/kvcache-ai/AgentENV/commit/c22f63088383839dc0429a90420a0e70d1b71359) feat(cli): add progress bar for upload/download ### 📊 Changes **11 files changed** (+1626 additions, -12 deletions) <details> <summary>View changed files</summary> 📝 `Cargo.lock` (+4 -0) 📝 `crates/aenv/Cargo.toml` (+6 -2) ➕ `crates/aenv/src/client/files.rs` (+335 -0) 📝 `crates/aenv/src/client/mod.rs` (+1 -0) ➕ `crates/aenv/src/commands/download.rs` (+641 -0) 📝 `crates/aenv/src/commands/mod.rs` (+2 -0) ➕ `crates/aenv/src/commands/upload.rs` (+374 -0) 📝 `crates/aenv/src/grpc/mod.rs` (+132 -9) 📝 `crates/aenv/src/main.rs` (+7 -0) ➕ `crates/aenv/src/progress.rs` (+67 -0) 📝 `docs/src/getting-started/aenv-cli.md` (+57 -1) </details> ### 📄 Description ## Summary - add `aenv upload` and `aenv download` commands for transferring files through envd - support recursive directory upload/download with cp-style destination resolution, hidden files, empty directories, conflict protection, and `--force` - add TTY-aware aggregate progress bars for file and directory transfers - route envd filesystem Connect RPCs through the existing sandbox proxy for stat/list/mkdir operations - document path behavior, `--user` restrictions, and metadata preservation limitations ## Behavior - single-file transfers support relative host paths and existing envd `--user` semantics - directory transfers require absolute remote paths and reject `--user` - symlinks and special files are rejected - directory downloads merge into existing directories; conflicting files require `--force` - ownership, permissions, timestamps, ACLs, xattrs, and hard-link relationships are not preserved ## Testing - `cargo test -p aenv` (39 tests) - `cargo clippy -p aenv --all-targets -- -D warnings` - `make fmt` - `git diff --check` - real envd 0.5.13 file and recursive directory upload/download validation, including nested files, hidden files, empty directories, conflict handling, and byte-for-byte hash comparison --- <sub>🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.</sub>
bsakaguchi 2026-10-29 14:20:07 +00:00
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
kvcache-ai/AgentENV#139
No description provided.