continuedev/continue · error · Error

Relace provider does not support streaming completion.

Error message

Relace provider does not support streaming completion.

What it means

Relace's adapter does not implement legacy streaming text completions; completionStream always throws. Relace only exposes its edit-style chat/FIM interface.

Source

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

        completion_tokens: result.usage.completion_tokens || 0,
        total_tokens: result.usage.total_tokens,
      },
    });
  }

  completionNonStream(
    body: CompletionCreateParamsNonStreaming,
    signal: AbortSignal,
  ): Promise<Completion> {
    throw new Error(
      "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 chatCompletionStream for Relace requests
  2. Send legacy streaming completions to another provider
  3. Add capability flags and skip Relace for legacy completion routes
Defensive patterns

Strategy: fallback

Validate before calling

if (provider === 'relace') throw new Error('Use chatCompletionStream instead');

Type guard

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

Try / catch

try { yield* api.completionStream(body); } catch (e) { if (e.message.includes('does not support streaming completion')) yield* api.chatCompletionStream(toChatParams(body)); else throw e; }

Prevention

When it happens

Trigger: Calling completionStream() on a Relace adapter instance.

Common situations: Streaming completion pipelines pointed at a Relace model id; capability-agnostic dispatch code assuming every adapter supports the full completion surface.

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/7e3dd49c3c9433c0. Report an issue: GitHub.