One-shot screenshot
Downscale for cheaper model calls, or crop to a region of interest:
observe — frame + change + targets
Pass your own targets to get a Set-of-Mark annotated frame back:
Only look when something changed
Combine dirty rects with ROI screenshots: when a small region changes, capture
only that region and skip full-frame model calls.
See Vision for the concepts and Agent
loop to put it together.