butler/mcp/turn_scrape_dedup_ops.py
Rama main · réplica de lectura del repositorio original.
"""Turn scrape dedup bridge bucket best-effort helpers (P0-A)."""
from __future__ import annotations
from butler.core.best_effort import safe_best_effort
def scrape_urls_seen_bucket_from_bridge_safe() -> set[str] | None:
def _run() -> set[str]:
from butler.execution_context import get_current_turn_bridge
bridge = get_current_turn_bridge()
if bridge is None:
raise ValueError("no turn bridge for scrape dedup")
bucket = getattr(bridge, "scrape_urls_seen", None)
if bucket is None:
bridge.scrape_urls_seen = set()
bucket = bridge.scrape_urls_seen
if not isinstance(bucket, set):
raise ValueError("scrape_urls_seen must be a set")
return bucket
result = safe_best_effort(
_run,
label="turn_scrape_dedup.bridge_bucket",
default=None,
)
return result if isinstance(result, set) else None