{"record":{"id":"6dfae48a6400ad51","repo":"deepseek-ai/deepseek-harness","slug":"lsp-unavailable","errorCode":"LSP_UNAVAILABLE","errorMessage":"no LSP provider handles \"${request.filePath}\"","messagePattern":"no LSP provider handles \"(.+?)\"","errorType":"exception","errorClass":"LspError","httpStatus":null,"severity":"error","filePath":"packages/lsp/lsp/src/index.ts","lineNumber":146,"sourceCode":"    // All checks passed: reserve id and every extension in one lifecycle controller so disposal\n    // releases them together.\n    const dispose = this.ctx.effect(function* (this: Lsp) {\n      this.providerIds.add(id)\n      for (const [ext, route] of pending) this.routes.set(ext, route)\n      yield () => {\n        this.providerIds.delete(id)\n        for (const ext of pending.keys()) this.routes.delete(ext)\n      }\n    }.bind(this), 'lsp.registerProvider()')\n    // ctx.effect's disposer returns Promise<void>; our disposer API is synchronous\n    // fire-and-forget — discard the (always-resolved) promise.\n    return () => void dispose()\n  }\n\n  async query(request: LspQueryRequest, signal?: AbortSignal): Promise<LspQueryResult> {\n    const route = this.routes.get(finalExtension(request.filePath))\n    if (route === undefined) {\n      throw new LspError(`no LSP provider handles \"${request.filePath}\"`, 'LSP_UNAVAILABLE')\n    }\n    return route.provider.query({ ...request, languageId: route.languageId }, signal)\n  }\n}\n\n/** Lowercase an extension and ensure it carries a leading dot; `EXTENSION_PATTERN` rejects the rest. */\nfunction normalizeExtension(ext: string): string {\n  const lower = ext.toLowerCase()\n  return lower.startsWith('.') ? lower : `.${lower}`\n}\n\nexport default Lsp\n","sourceCodeStart":128,"sourceCodeEnd":159,"githubUrl":"https://github.com/deepseek-ai/deepseek-harness/blob/b150a551b8d465e31e418e1b2eaf5e79bbb7d28e/packages/lsp/lsp/src/index.ts#L128-L159","documentation":"Error \"no LSP provider handles \"${request.filePath}\"\" thrown in deepseek-ai/deepseek-harness.","triggerScenarios":"Thrown at packages/lsp/lsp/src/index.ts:146 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Register an LSP provider that handles this file's language, or fix the file path."],"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"}