{"record":{"id":"eeb23218e2e4872c","repo":"continuedev/continue","slug":"method-not-implemented","errorCode":null,"errorMessage":"Method not implemented.","messagePattern":"Method not implemented\\.","errorType":"exception","errorClass":"Error","httpStatus":null,"severity":"error","filePath":"packages/openai-adapters/src/apis/Anthropic.ts","lineNumber":475,"sourceCode":"        method: \"POST\",\n        headers: this.getHeaders(),\n        body: JSON.stringify(this._convertBody(body)),\n        signal,\n      },\n    );\n    yield* this.handleStreamResponse(response, body.model);\n  }\n\n  private getHeaders(): Record<string, string> {\n    const enableCaching = this.config?.cachingStrategy !== \"none\";\n    return getAnthropicHeaders(this.config.apiKey, enableCaching, this.apiBase);\n  }\n\n  async completionNonStream(\n    body: CompletionCreateParamsNonStreaming,\n    signal: AbortSignal,\n  ): Promise<Completion> {\n    throw new Error(\"Method not implemented.\");\n  }\n  async *completionStream(\n    body: CompletionCreateParamsStreaming,\n    signal: AbortSignal,\n  ): AsyncGenerator<Completion> {\n    throw new Error(\"Method not implemented.\");\n  }\n  async *fimStream(\n    body: FimCreateParamsStreaming,\n    signal: AbortSignal,\n  ): AsyncGenerator<ChatCompletionChunk> {\n    throw new Error(\"Method not implemented.\");\n  }\n\n  async embed(\n    body: OpenAI.Embeddings.EmbeddingCreateParams,\n  ): Promise<OpenAI.Embeddings.CreateEmbeddingResponse> {\n    throw new Error(\"Method not implemented.\");","sourceCodeStart":457,"sourceCodeEnd":493,"githubUrl":"https://github.com/continuedev/continue/blob/5522c6f44ca0ac3528b37244818fbfa39b5af470/packages/openai-adapters/src/apis/Anthropic.ts#L457-L493","documentation":"The Anthropic API has no legacy /v1/completions text-completion endpoint, so the adapter's completionNonStream is a permanent stub that throws. Anthropic only supports message-based (chat) APIs.","triggerScenarios":"Calling completionNonStream(body, signal) on the Anthropic adapter — i.e. sending CompletionCreateParamsNonStreaming to a provider configured as anthropic.","commonSituations":"Generic code that picks a completion method based on a model name or legacy config and routes legacy completions to Anthropic; migrating from OpenAI text-davinci-style calls to Claude without updating call sites.","solutions":["Use chatCompletionNonStream with messages instead of a raw prompt","In generic routing layers, detect Anthropic and translate prompt→messages automatically","Remove legacy completions call paths when targeting Claude models"],"exampleFix":"// before\nconst res = await api.completionNonStream({ model: 'claude-3-5-sonnet', prompt: 'Hi' }, signal);\n\n// after\nconst res = await api.chatCompletionNonStream({ model: 'claude-3-5-sonnet', messages: [{ role: 'user', content: 'Hi' }] }, signal);","handlingStrategy":"type-guard","validationCode":"if (api instanceof Anthropic) { throw new Error('Use chatCompletionNonStream for Anthropic'); }","typeGuard":"function supportsLegacyCompletions(api: BaseApi): boolean { return !(api instanceof Anthropic) && !(api instanceof AskSage); }","tryCatchPattern":"try { return await api.completionNonStream(body, signal); }\ncatch (e) { if (e.message === 'Method not implemented.') { return await api.chatCompletionNonStream(promptToChat(body), signal); } throw e; }","preventionTips":["Never send legacy completions to Claude backends","Centralize prompt→messages translation in a routing layer"],"tags":["anthropic","legacy-completions","unsupported-feature"],"backgroundTag":"unsupported-api-method","analyzedSha":"5522c6f44ca0ac3528b37244818fbfa39b5af470","analyzedAt":"2026-08-27T11:28:54.683Z","schemaVersion":2},"datasetVersion":"2026-08-27T13:17:12.746Z"}