ShellBackend
Abstraction over a privileged shell-command pipeline.
Two concrete implementations are planned:
ShizukuShellBackend(in:droid-mcp-shizuku, ships 0.8.0) — wrapsShizuku.newProcessforshell-UID execution without root.RootShellBackend(in:droid-mcp-root, ships 0.9.0) — wrapslibsuforroot-UID execution. Same surface, broader capabilities (writes to/system, etc.).
Tools in :droid-mcp-shell-core are parameterised over ShellBackend so the LLM-facing surface is identical across backends; the host app picks which one (or both) to register at startup.
Inheritors
Properties
Functions
Run command with args as a shell process. Returns stdout/stderr/exit. Implementations should NOT throw on non-zero exit codes — surface them via ShellResult.exitCode so tools can decide whether that's an error.
True when the backend is currently reachable — Shizuku binder pingable with permission granted, or su available, depending on the impl. Tools call this for fast-fail before constructing a command.