{"record":{"id":"dbb306b284eedf6f","repo":"continuedev/continue","slug":"relace-provider-does-not-support-non-streaming-com","errorCode":null,"errorMessage":"Relace provider does not support non-streaming completion.","messagePattern":"Relace provider does not support non-streaming completion\\.","errorType":"exception","errorClass":"Error","httpStatus":null,"severity":"error","filePath":"packages/openai-adapters/src/apis/Relace.ts","lineNumber":151,"sourceCode":"      content: mergedCode,\n      model: body.model,\n    });\n\n    yield usageChatChunk({\n      model: body.model,\n      usage: {\n        prompt_tokens: result.usage.prompt_tokens || 0,\n        completion_tokens: result.usage.completion_tokens || 0,\n        total_tokens: result.usage.total_tokens,\n      },\n    });\n  }\n\n  completionNonStream(\n    body: CompletionCreateParamsNonStreaming,\n    signal: AbortSignal,\n  ): Promise<Completion> {\n    throw new Error(\n      \"Relace provider does not support non-streaming completion.\",\n    );\n  }\n  completionStream(\n    body: CompletionCreateParamsStreaming,\n    signal: AbortSignal,\n  ): AsyncGenerator<Completion> {\n    throw new Error(\"Relace provider does not support streaming completion.\");\n  }\n  fimStream(\n    body: FimCreateParamsStreaming,\n    signal: AbortSignal,\n  ): AsyncGenerator<ChatCompletionChunk> {\n    throw new Error(\n      \"Relace provider does not support streaming FIM completion.\",\n    );\n  }\n  embed(body: EmbeddingCreateParams): Promise<CreateEmbeddingResponse> {","sourceCodeStart":133,"sourceCodeEnd":169,"githubUrl":"https://github.com/continuedev/continue/blob/5522c6f44ca0ac3528b37244818fbfa39b5af470/packages/openai-adapters/src/apis/Relace.ts#L133-L169","documentation":"Relace is an editing/FIM-only provider; its adapter explicitly rejects legacy non-streaming text completions with this error rather than silently failing.","triggerScenarios":"Calling completionNonStream() on a Relace adapter with CompletionCreateParamsNonStreaming.","commonSituations":"Generic completion dispatch code that tries non-streaming first; older codebases using /v1/completions-style calls routed to Relace.","solutions":["Use chatCompletionNonStream / chatCompletionStream (the edit API) instead of legacy completions","Route legacy completion traffic to an OpenAI-compatible adapter","Catch this error and fall back to a chat-completion-shaped request"],"exampleFix":null,"handlingStrategy":"fallback","validationCode":"if (provider === 'relace') throw new Error('Relace has no legacy completions; use chatCompletionNonStream');","typeGuard":"const supportsLegacyCompletion = (p: string) => p !== 'relace';","tryCatchPattern":"try { return await api.completionNonStream(body); } catch (e) { if (e.message.includes('does not support non-streaming completion')) return await api.chatCompletionNonStream(toChatParams(body)); throw e; }","preventionTips":["Map legacy completion params to chat params for Relace"],"tags":["relace","unsupported-operation","completions"],"backgroundTag":"unsupported-operation","analyzedSha":"5522c6f44ca0ac3528b37244818fbfa39b5af470","analyzedAt":"2026-08-27T11:28:54.683Z","schemaVersion":2},"datasetVersion":"2026-08-27T13:17:12.746Z"}