c626dded13
The session-log fix (browser_tool._sanitize_url_for_logs) and the supervisor attach-timeout fix (CDPSupervisor.start) both composed the same three redactors (redact_sensitive_text -> _redact_url_query_params -> _redact_url_userinfo) to mask CDP endpoint credentials. Two copies of one policy drift: tune one site (e.g. add fragment masking) and the other silently re-leaks. Promote that composition to a single public helper redact_cdp_url() in agent/redact.py -- the one place the CDP-URL redaction policy lives -- and route both call sites through it (_sanitize_url_for_logs becomes a thin wrapper; the supervisor imports the helper instead of re-composing the private redactors). Add direct unit tests for the seam covering query tokens, multiple credentials, userinfo passwords, plain-URL passthrough, non-string/exception coercion, and None. No behavior change at the call sites; both leak paths remain closed.