{"record":{"id":"df32f81ae0819dee","repo":"Tencent/WeKnora","slug":"no-web-search-provider-configured","errorCode":null,"errorMessage":"no web search provider configured","messagePattern":"no web search provider configured","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"internal/application/service/web_search.go","lineNumber":129,"sourceCode":"\t\t\treturn nil, fmt.Errorf(\"failed to create provider %s (%s): %w\", entity.Name, entity.Provider, err)\n\t\t}\n\t\treturn provider, nil\n\t}\n\n\t// Backward compatibility: use the deprecated config.Provider field\n\tif cfg.Provider != \"\" {\n\t\tlogger.Warnf(ctx, \"Using deprecated WebSearchConfig.Provider field: %s. Please migrate to WebSearchProviderEntity.\", cfg.Provider)\n\t\tparams := mergeProxyFromWebSearchConfig(types.WebSearchProviderParameters{\n\t\t\tAPIKey: cfg.APIKey,\n\t\t}, cfg)\n\t\tprovider, err := s.registry.CreateProvider(cfg.Provider, params)\n\t\tif err != nil {\n\t\t\treturn nil, fmt.Errorf(\"web search provider %s is not available: %w\", cfg.Provider, err)\n\t\t}\n\t\treturn provider, nil\n\t}\n\n\treturn nil, fmt.Errorf(\"no web search provider configured\")\n}\n\n// mergeProxyFromWebSearchConfig applies cfg.ProxyURL over stored provider params when non-empty (call-time override).\nfunc mergeProxyFromWebSearchConfig(base types.WebSearchProviderParameters, cfg *types.WebSearchConfig) types.WebSearchProviderParameters {\n\tif cfg != nil {\n\t\tif pu := strings.TrimSpace(cfg.ProxyURL); pu != \"\" {\n\t\t\tbase.ProxyURL = pu\n\t\t}\n\t}\n\treturn base\n}\n\n// CompressWithRAG performs RAG-based compression using a temporary, hidden knowledge base.\n// The temporary knowledge base is deleted after use. The UI will not list it due to repo filtering.\nfunc (s *WebSearchService) CompressWithRAG(\n\tctx context.Context, sessionID string, tempKBID string, questions []string,\n\twebSearchResults []*types.WebSearchResult, cfg *types.WebSearchConfig,\n\tkbSvc interfaces.KnowledgeBaseService, knowSvc interfaces.KnowledgeService,","sourceCodeStart":111,"sourceCodeEnd":147,"githubUrl":"https://github.com/Tencent/WeKnora/blob/988cbb03305e055d8ebb7d46d9ac6cc0803cd074/internal/application/service/web_search.go#L111-L147","documentation":"Configuration guard in WebSearchService.resolveProvider: neither a provider ID nor the deprecated config.Provider field was supplied, so the service has no web search backend to delegate to. It fires when Search is called with an empty WebSearchConfig — i.e., web search was never configured for this workspace.","triggerScenarios":"Thrown at internal/application/service/web_search.go:129 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Configure a web search provider for the tenant/session","Pass providerID or set cfg.Provider (legacy) before calling Search","Surface a config-required error to the user/UI"],"exampleFix":null,"handlingStrategy":"validation","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"988cbb03305e055d8ebb7d46d9ac6cc0803cd074","analyzedAt":"2026-09-02T14:41:08.344Z","contentChangedAt":null,"schemaVersion":2},"datasetVersion":"2026-09-08T10:18:20.063Z"}