//! Five commands: `pick_folder` → `{ uri, path }` (path null when the tree //! is not on a volume with a path), `all_files_access` → `{ granted }`, //! `request_all_files_access`, which opens the system screen, `pick_image` //! → `{ path }` (a photo, copied into the app's cache), and `pick_file` → //! `{ path, name, size, copied }` — the document picker with the caller's //! own MIME filter. //! //! `pick_file` copies as little as it can, because an image is small and an //! audio file is not. A document already on this phone's storage hands its //! own path over as it lies, so picking a 300 MB file costs nothing; one //! with no path of its own is copied into `cacheDir/picked` under its own //! display name, and only as far as `maxCopyBytes` allows — zero refuses //! the copy outright. Those copies are swept at the start of every pick, so //! a path from one pick is gone by the next: read it in the same breath. //! The display name travels beside the path because it is load-bearing — //! the playlist parser picks its format off the extension and titles the //! draft from the stem. //! //! On the desktop the plugin is registered so the permission set resolves, //! and every command answers "not here".