Tencent/WeKnora · error

web search provider not found: %s

Error message

web search provider not found: %s

What it means

Resolution failure in WebSearchService.resolveProvider: a provider entity was previously looked up (or a name given) but the provider registry could not construct/locate a matching web search provider implementation. The %s names the requested provider; it fires when the stored provider type is unknown to the registry or the provider record vanished, blocking the Search flow.

Source

Thrown at internal/application/service/web_search.go:105

// 2. The deprecated config.Provider field (backward compatibility) — creates with empty params
func (s *WebSearchService) resolveProvider(
	ctx context.Context,
	providerID string,
	cfg *types.WebSearchConfig,
) (interfaces.WebSearchProvider, error) {
	// New path: load provider entity from DB
	if providerID != "" {
		tenantID, ok := types.TenantIDFromContext(ctx)
		if !ok {
			return nil, fmt.Errorf("workspace ID not found in context")
		}

		entity, err := s.providerRepo.GetByID(ctx, tenantID, providerID)
		if err != nil {
			return nil, fmt.Errorf("failed to load web search provider %s: %w", providerID, err)
		}
		if entity == nil {
			return nil, fmt.Errorf("web search provider not found: %s", providerID)
		}

		params := mergeProxyFromWebSearchConfig(entity.Parameters, cfg)
		provider, err := s.registry.CreateProvider(string(entity.Provider), params)
		if err != nil {
			return nil, fmt.Errorf("failed to create provider %s (%s): %w", entity.Name, entity.Provider, err)
		}
		return provider, nil
	}

	// Backward compatibility: use the deprecated config.Provider field
	if cfg.Provider != "" {
		logger.Warnf(ctx, "Using deprecated WebSearchConfig.Provider field: %s. Please migrate to WebSearchProviderEntity.", cfg.Provider)
		params := mergeProxyFromWebSearchConfig(types.WebSearchProviderParameters{
			APIKey: cfg.APIKey,
		}, cfg)
		provider, err := s.registry.CreateProvider(cfg.Provider, params)
		if err != nil {

View on GitHub (pinned to 988cbb0330)

Solutions

  1. Confirm the providerID (config may be stale after deletion)
  2. List available providers for the tenant and pick a valid one
  3. Recreate the provider entity if it was removed
Defensive patterns

Strategy: validation

When it happens

Trigger: Thrown at internal/application/service/web_search.go:105 when the library encounters an invalid state.

Common situations: See trigger scenarios.


AI-assisted analysis of Tencent/WeKnora@988cbb0330 (2026-09-02). Data as JSON: /api/errors/e48a08de91e28c06. Report an issue: GitHub.