continuedev/continue · error · Error

Relace provider does not support embeddings.

Error message

Relace provider does not support embeddings.

What it means

Relace's adapter does not implement embeddings; embed() always throws 'Relace provider does not support embeddings.' Relace is purely an edit/completion provider.

Source

Thrown at packages/openai-adapters/src/apis/Relace.ts:170

      "Relace provider does not support non-streaming completion.",
    );
  }
  completionStream(
    body: CompletionCreateParamsStreaming,
    signal: AbortSignal,
  ): AsyncGenerator<Completion> {
    throw new Error("Relace provider does not support streaming completion.");
  }
  fimStream(
    body: FimCreateParamsStreaming,
    signal: AbortSignal,
  ): AsyncGenerator<ChatCompletionChunk> {
    throw new Error(
      "Relace provider does not support streaming FIM completion.",
    );
  }
  embed(body: EmbeddingCreateParams): Promise<CreateEmbeddingResponse> {
    throw new Error("Relace provider does not support embeddings.");
  }
  rerank(body: RerankCreateParams): Promise<CreateRerankResponse> {
    throw new Error("Relace provider does not support reranking.");
  }
  list(): Promise<Model[]> {
    throw new Error("Relace provider does not support model listing.");
  }
}

View on GitHub (pinned to 5522c6f44c)

Solutions

  1. Use an embeddings provider (OpenAI, Jina, Voyage, etc.) for embed() calls
  2. Fix the model→provider mapping so embedding models never resolve to Relace
  3. Skip Relace in embedding-capable provider discovery

Example fix

// before
embeddingModel: { provider: 'relace', model: '...' }
// after
embeddingModel: { provider: 'openai', model: 'text-embedding-3-small' }
Defensive patterns

Strategy: validation

Validate before calling

if (provider === 'relace') throw new Error('Relace cannot serve embeddings');

Type guard

const supportsEmbed = (p: string) => p !== 'relace';

Try / catch

try { return await api.embed(body); } catch (e) { if (e.message.includes('does not support embeddings')) return await openai.embed(body); throw e; }

Prevention

When it happens

Trigger: Calling embed() on a Relace adapter with EmbeddingCreateParams.

Common situations: Multi-provider setups where an embedding model accidentally resolves to the Relace provider; pipeline code calling embed() on every configured adapter.

Understand the failure class

Background: UnsupportedOperationException and "is not supported" errors: when a library deliberately refuses a call — this error's family across 30 libraries.

Related errors


AI-assisted analysis of continuedev/continue@5522c6f44c (2026-08-27). Data as JSON: /api/errors/6971e7f924dec635. Report an issue: GitHub.