cli: simplify `entire api` (dedup git + mirror filter, drop stdin seam)
main·
Commit

Cleanups from a simplify pass:
- expandAPIPlaceholders resolves the origin remote once and threads forge/owner/repo into resolveCurrentRepoID, instead of both resolving it — a path with {owner}/{repo} and {repo_id} no longer does two git calls.
- Extract isActiveMirror(coreapi.Mirror): the archived + failed/suspended placement filter now has one home, shared by resolveCurrentRepoID and distinctActiveClusterHosts.
- Drop the unused stdinReader test seam (and the ctx it dragged through readAPIInput/buildAPIRequestBody); read os.Stdin directly.
- Hoist method inference in buildAPIRequestBody so it's decided once up front rather than re-checked inside the --input branch.
No behaviour change.
Co-Authored-By: Claude Opus 4.8 noreply@anthropic.com Entire-Checkpoint: 2c1bcacae2d6
Checkpoints
Checkpoint 1