概览
dsh-file-download
源码级技术说明File browser, download surface, and mode-gated upload for the DSH Web GUI: browse the whole serving filesystem, resume a download with Range, archive folders and selections as streamed ZIPs, and upload with an overwrite prompt under a read-only / workspace-write / full-access policy that defaults to the session's own.收起技术说明
README / ZH
插件文档
目录摘要
dsh.pub 核对固定版本的组合包契约、运行时事实与分发语义;完整 README 请查看源仓库。
在 GitHub 阅读完整 READMELIMITATIONS
已知限制
- **Write scope is narrow by design.** Upload adds a file into an existing directory; it cannot create directories, rename, move, delete, or edit in place. Directories are created by the agent or by `mkdir` in a shell. - **Resume is the browser's.** The route serves `Range`, so the download manager resumes; a client that ignores it simply starts over. A generated ZIP cannot resume, because it has no stable byte identity between requests. - **Archive caps are hard.** A tree over 20000 entries or 2 GiB in total is refused instead of streamed. The total cap keeps every offset inside the 32-bit fields this writer emits, which is why no ZIP64 record is needed; raising it means implementing ZIP64. - **Symlinks and special files are skipped** rather than followed, in listings and archives alike. - **Binary uploads assume a local execution world.** A text upload always goes through the composed filesystem; a binary one is written by the host process, so a backend whose execution world is not this host (a remote workspace) would text-upload correctly but binary-upload to the wrong place. - **Download-all is a burst of downloads.** Browsers may ask for permission or block the extra downloads when a turn has many files; per-file downloads are always reliable. - **A turn's list is bounded by the official row.** Only files the official deliverables row would show are listed: successful first-party mutations and explicit `present` declarations.
