Behaviour for URL fetch providers used by Vibe's Web eval API.
Providers fetch a URL and return normalized Vibe.Plugins.WebSearch.FetchResult structs.
Local providers may use Req; hosted deployments can swap in browser or page
extraction services without changing agent-facing eval code.
Summary
Callbacks
@callback capabilities() :: map()
@callback fetch( String.t(), keyword() ) :: {:ok, Vibe.Plugins.WebSearch.FetchResult.t()} | {:error, term()}