Prompts a native "save as" dialog, then streams a subtree (branch) export
to the chosen path on disk. This bypasses the in-memory download path, so
memory stays bounded regardless of archive size. Progress/success/error
are reported over the WebSocket via taskId. Resolves once the dialog is
dismissed (cancelled) or the export finishes (saved / error).
Desktop-native subtree export that streams a
.zipstraight to a file.