The provider now takes a thunk rather than a value: it projects the
authoritative section per search, so a stored endpoint, model, or key
reference reaches the next call without re-registering the provider — which
would make the seam's provider selection observable as a flicker.
apiKey already carries role('secret'), so the section is safe to describe:
the literal never rides a response in any layer and a configuration surface
learns only that a key is set.
web/ — web capability family
English | 中文
This family provides provider-neutral web search and fetch operations plus the model-facing tools that consume them.
| Package | Role | ctx key |
|---|---|---|
web/ |
Defines web provider registration, selection, and shared errors | ctx.web |
web-search-exa/ |
Provides web search through Exa | registers on ctx.web |
web-search-perplexity/ |
Provides web search through Perplexity | registers on ctx.web |
web-search-deepseek/ |
Provides native DeepSeek web search | registers on ctx.web |
web-fetch-local/ |
Fetches public HTTP and HTTPS resources | registers on ctx.web |
tool-web/ |
Exposes web search and fetch to the model | registers on ctx.tools |
The web capability decision records why search and fetch share one provider-selection service.
The subsystem reference — search/fetch requests and results, availability, WebError — is docs/subsystems/web.md; rationale (including deferred SSRF protection) in the web capability seam Agent Note.