Skip to content

feat(hex-ssh): Add recursive directory transfer workflow #39

@levnikolaevich

Description

@levnikolaevich

Context

Current ssh-upload and ssh-download are strong single-file tools. Competitors with broader SFTP surfaces already cover directory-oriented workflows and recursive operations.

There is now a clear distinction between single-file transfer robustness and complete remote file sync workflow breadth. The next capability step is directory transfer, not more hidden complexity inside the current single-file tools.

This should follow #38, because recursive behavior should be built on top of proven real-server transfer semantics.

Why after #38

  • directory transfer multiplies edge cases already present in single-file transfer
  • backend differences, failure cleanup, and symlink handling should be informed by real-server evidence first
  • separate tools are safer than silently extending current single-file behavior

What to do

  • Add separate recursive directory transfer tools for SSH/SFTP workflows
  • Support:
    • recursive upload of local directory trees
    • recursive download of remote directory trees
  • Define explicit policy for:
    • overwrite behavior
    • symlinks
    • partial failure cleanup
    • empty directories
    • mixed existing trees
  • Keep these as separate tools instead of hiding recursion behind the current single-file API
  • Use a conservative default symlink policy and document it explicitly

Schema/API changes

  • Add new directory-oriented tool names rather than extending ssh-upload / ssh-download implicitly
  • Reuse the existing connection/security model where possible

Definition of Done

  • Recursive upload tool exists
  • Recursive download tool exists
  • Overwrite behavior is explicit and documented
  • Symlink policy is defined and tested
  • Partial failure behavior is defined and tested
  • Docs clearly separate single-file and directory workflows

Related issues

  • Depends on: #38
  • Complementary with: #37
  • Should land before any advanced transfer modes from #41

Priority

Medium-high. This is the clearest functional breadth gap versus stronger SFTP competitors.

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions