"""Tab targeting for the MCP surface. MCP callers pay a full round trip for every extra tool call, so tools that act on a tab accept an optional ``tab_id`` and fall back to the browser's current active tab. Resolution happens here rather than by forwarding ``None`` into the SDK, so the acting tool always knows which tab it touched and can report it. """ from __future__ import annotations from browser_cli import BrowserCLI def resolve_tab_id(client: BrowserCLI, tab_id: int | None) -> int: """Return *tab_id*, or the ID of the currently active tab when it is ``None``.""" if tab_id is not None: return tab_id return client.tabs.active().id