feat(cli): scripted takeover hold and release subcommands

ST
5d ago
+840-13

Summary

takeover today is a foreground interactive hold (TTL plus heartbeat), so scripted side-car tools โ€” a dpctl harness, an adb side-car, a CI step โ€” cannot announce themselves to the daemon and end up fighting live sessions for the same device. This adds non-interactive subcommands that reuse the existing human-control holds: takeover hold --device <udid> --reason <text> --ttl-ms 60000 prints a hold id, and takeover release <id> removes it. Same authority surface, one machine-readable entry.

11 files changed (CLI subcommands, hold plumbing, tests).

Validation

  • Head: 2add31fa7 on a68693c72.
  • pnpm run typecheck, pnpm run lint, takeover and CLI tests, integration-progress --check, fallow, freerange: pass locally.
  • Independent cold review: APPROVE. CI runs the full gates on push.

๐Ÿค– Generated with Claude Code


Autofix with [code]smith
Open in [code]smith ยท Need help on this PR? Tag @codesmith-bot with what you need.