• The resolved sandbox ZenFS, or null when unavailable. The ONE home for the resolution order previously duplicated in every app's mountFs.ts:

    1. globalThis.__sandpackSharedFs — the /-rooted bound ZenFS the sandbox publishes.
    2. fallback: the first module.evaluation.module.bundler.fs.layers[].boundContext.fs whose surface has readFile (the bundler ZenFS-layer bound context).
    3. else null (plain local vite dev / before boot).

    Under vite dev WITH the @immediately-run/dev-fs plugin (>= 0.5.0), step 1 resolves: the plugin publishes its local-disk fs bridge at the same __sandpackSharedFs global, so openFs / readBlob / readObjectUrl / useObjectUrl work locally through this existing path with no special-casing. Without the plugin they fail with unavailable.

    Prefer openFs; reach for this only when a system app spans mounts in absolute /mnt/{hash} paths (the file explorer / editor).

    Returns null | SandboxFsPort