{"record":{"id":"35ba88a4a3f19ef9","repo":"deepseek-ai/deepseek-harness","slug":"web-aborted-35ba88","errorCode":"WEB_ABORTED","errorMessage":"DeepSeek search aborted","messagePattern":"DeepSeek search aborted","errorType":"exception","errorClass":"WebError","httpStatus":null,"severity":"error","filePath":"packages/web/web-search-deepseek/src/provider.ts","lineNumber":239,"sourceCode":"    try {\n      response = await fetch(endpoint, {\n        method: 'POST',\n        redirect: 'error',\n        headers: {\n          // Official DeepSeek expects `x-api-key`; an Anthropic-compatible proxy\n          // may expect `Authorization: Bearer` — send both so either resolves.\n          'x-api-key': apiKey,\n          'authorization': `Bearer ${apiKey}`,\n          'anthropic-version': options.apiVersion,\n          'content-type': 'application/json',\n          'accept': 'application/json',\n          'user-agent': USER_AGENT,\n        },\n        body: JSON.stringify(body),\n        ...signal !== undefined ? { signal } : {},\n      })\n    } catch (error: unknown) {\n      if (signal?.aborted === true || isAbortError(error)) throw searchAborted(signal, error)\n      throw new WebError(`DeepSeek search request failed: ${String(error)}`, 'WEB_PROVIDER_ERROR', { cause: error })\n    }\n\n    if (!response.ok) {\n      const status = response.status\n      let message = `DeepSeek API error (HTTP ${status})`\n      try {\n        const parsed = await response.json() as AnthropicError\n        const detail = typeof parsed.error === 'string' ? parsed.error : parsed.error?.message ?? parsed.message\n        if (detail !== undefined && detail.length > 0) message = detail\n      } catch (error: unknown) {\n        // An abort fired mid-body must surface as WEB_ABORTED, not be swallowed\n        // into a generic HTTP-error message — cancellation is not a provider\n        // error (the seam's cancellation contract).\n        if (signal?.aborted === true || isAbortError(error)) throw searchAborted(signal, error)\n        // Otherwise: the HTTP status is already captured in `message` above; a\n        // malformed/non-JSON error body (normal for gateway 5xx/429s) can only\n        // cost a richer provider message, never the real error.","sourceCodeStart":221,"sourceCodeEnd":257,"githubUrl":"https://github.com/deepseek-ai/deepseek-harness/blob/b150a551b8d465e31e418e1b2eaf5e79bbb7d28e/packages/web/web-search-deepseek/src/provider.ts#L221-L257","documentation":"Error \"DeepSeek search aborted\" thrown in deepseek-ai/deepseek-harness.","triggerScenarios":"Thrown at packages/web/web-search-deepseek/src/provider.ts:239 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Retry the search; aborts come from cancellation or timeouts."],"exampleFix":null,"handlingStrategy":null,"validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"b150a551b8d465e31e418e1b2eaf5e79bbb7d28e","analyzedAt":"2026-08-24T18:12:29.105Z","schemaVersion":2},"datasetVersion":"2026-08-24T22:17:12.610Z"}