e3f4dc2103
\`pm list packages com.termux.api\` is the canonical way to detect the Termux:API Android app, but on some devices it gives a false negative even when the app is installed and \`termux-microphone-record\` runs fine — the symptom reported in #31015 (\`/voice on\` complaining "Termux:API Android app is not installed"). Replace the single probe with a graded strategy: 1. Try \`pm list packages com.termux.api\` (current behaviour). 2. If \`pm\` isn't on PATH or returns non-zero, fall back to \`cmd package list packages com.termux.api\` — the modern Android API 28+ equivalent that's present on devices where \`pm\` is gone. 3. If both probes are inconclusive (binary missing, permission denied, timeout, or non-zero exit) and \`termux-microphone-record\` is on PATH, trust the binary. The CLI ships in the \`termux-api\` package which is essentially only useful with the Android app installed; users who installed it deliberately almost always have the app too. Polarity matters: a false negative on this gate blocks \`/voice on\` entirely (the user-reported symptom), while a false positive only surfaces a precise runtime error from the binary itself when it tries to talk to the missing app — strictly more actionable. The clean-probe-but-no-package case still returns False, so the existing "Termux:API CLI installed without the app" warning still fires when the package manager *can* tell us the app is missing. Refs: NousResearch/hermes-agent#31015