"""Selectors: WHAT a cursor targets in pixel space. Hierarchy (each subsumes the previous as a special case): Point < Mask < Region < Layer < Anchor3D Token is orthogonal — semantic rather than spatial; the cross-attention map of the bound model materializes the spatial extent at op time. """ from __future__ import annotations from dataclasses import dataclass from typing import Optional, Tuple, Union import numpy as np @dataclass(frozen=True, slots=True) class Point: x: float y: float z: Optional[float] = None @dataclass(frozen=True, slots=True) class Region: x: int y: int w: int h: int @dataclass(frozen=True, slots=True, eq=False) class Mask: bitmap: np.ndarray is_soft: bool = False @dataclass(frozen=True, slots=True) class Token: text: str embedding_id: Optional[str] = None @dataclass(frozen=True, slots=True) class Layer: layer_id: str @dataclass(frozen=True, slots=True) class Anchor3D: anchor_id: str bbox: Tuple[float, float, float, float, float, float] Selector = Union[Point, Region, Mask, Token, Layer, Anchor3D]