Dudu-0223 f843ea7701 fix: align web packages with master's two-stage build layout 2 ay önce
..
src d01f5f73b7 Add web capability seam: ctx.web, search/fetch providers, web tools 2 ay önce
tests d01f5f73b7 Add web capability seam: ctx.web, search/fetch providers, web tools 2 ay önce
README.md d01f5f73b7 Add web capability seam: ctx.web, search/fetch providers, web tools 2 ay önce
package.json f843ea7701 fix: align web packages with master's two-stage build layout 2 ay önce
tsconfig.json f843ea7701 fix: align web packages with master's two-stage build layout 2 ay önce
tsdown.config.ts f843ea7701 fix: align web packages with master's two-stage build layout 2 ay önce

README.md

@deepseek-ai/dsh-tool-web

The model-facing web tool suite — web_search and web_fetch — over the web capability seam (ctx.web). It owns model-facing concerns only: tool names, JSON schemas, snake_case argument names, prompt sections, the result-count bound, result formatting, HTML→markdown presentation, and presentCall. All web access goes through ctx.web; this package never imports a concrete provider.

Each tool is also a subpath plugin (@deepseek-ai/dsh-tool-web/search, /fetch) for focused deployments.

Tools

Tool Args Behavior
web_search query (string) Discovery. Returns an optional answer plus source URLs. max_results is not model-facing — the tool sets the bound (WEB_SEARCH_MAX_RESULTS = 8) and passes it to the seam.
web_fetch url (string), timeout_ms (number, optional) Retrieves a specific URL. HTML bodies are rendered to markdown-ish text; text bodies pass through. A non-2xx status is reported, not an error.

Config

Key Default Meaning
search true Register web_search.
fetch true Register web_fetch.
- id: tool-web
  name: '@deepseek-ai/dsh-tool-web'

Stable registration

Tool registration follows product enablement, not backend availability. A tool stays visible even when its selected provider is missing, misconfigured, ambiguous, or temporarily unavailable; the seam resolves the provider at execution time and execution fails with a structured WebError (e.g. WEB_PROVIDER_UNAVAILABLE, WEB_PROVIDER_AMBIGUOUS), which ToolRegistry.execute() turns into an error tool result the model can read and hooks/UI can route on. This keeps the model schema stable without making plugin load order, credential state, or HMR timing part of the model-facing contract. To remove a web tool entirely, disable it here in config.

The tool reads only the aggregated ctx.web.searchStatus() / fetchStatus() for diagnostics — never each provider's status() directly — so provider selection has one owner.