Load filebase + content from daemon (RPC-File.read).
Wire: result is the File row (indexed id when in project, else id == -1); response.msg is file content; response.msg_encode: 0 when result.is_text, 1 = base64 otherwise. Populates buffer from decoded msg — **🚫** no local disk read on thin client.
Whether the path may be read (project vs permission-granted) is a tool/client decision; the daemon reads params.path on disk.