deepseek-ai/deepseek-harness · error · WebError
WEB_DUPLICATE_PROVIDER
WEB_DUPLICATE_PROVIDER
Error message
a web provider with id "${provider.id}" is already registered What it means
Error "a web provider with id "${provider.id}" is already registered" thrown in deepseek-ai/deepseek-harness.
Source
Thrown at packages/web/web/src/index.ts:120
*/
registerSearchProvider(provider: WebSearchProvider): () => void {
return this.registerProvider(this.searchProviders, provider)
}
/**
* Register a fetch provider. Throws {@link WebError} `WEB_DUPLICATE_PROVIDER`
* if its id is already registered for fetch. Returns a disposer; disposed
* with the calling fiber.
* @param provider - the provider; its `id` is the registry key.
* @returns the disposer that unregisters the provider.
*/
registerFetchProvider(provider: WebFetchProvider): () => void {
return this.registerProvider(this.fetchProviders, provider)
}
private registerProvider<P extends { readonly id: string }>(store: Map<string, P>, provider: P): () => void {
if (store.has(provider.id)) {
throw new WebError(`a web provider with id "${provider.id}" is already registered`, 'WEB_DUPLICATE_PROVIDER')
}
const dispose = this.ctx.effect(function* () {
store.set(provider.id, provider)
yield () => store.delete(provider.id)
}, 'web.registerProvider()')
// ctx.effect's disposer returns Promise<void>; our disposer API is
// synchronous fire-and-forget — discard the (always-resolved) promise.
return () => void dispose()
}
/**
* Run one search through the selected provider. Resolves the provider at call
* time with the selection rules above; throws {@link WebError} when the
* capability cannot run. The seam enforces `request.maxResults` on the result:
* if the provider over-returns, `sources[]` is truncated and `truncated` set.
* @param request - the query and optional result limit.
* @param signal - optional cancellation signal forwarded to the provider.
* @returns the provider's results, capped to `request.maxResults`.View on GitHub (pinned to b150a551b8)
Solutions
- Pick a unique id for the provider you are registering, or remove the earlier registration of the same id from your cordis.yml composition.
- If the replacement is intentional, unregister the existing provider first and then register the new one.
When it happens
Trigger: Thrown at packages/web/web/src/index.ts:120 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of deepseek-ai/deepseek-harness@b150a551b8 (2026-08-24).
Data as JSON: /api/errors/8f781f1e5dc0766c.
Report an issue: GitHub.