continuedev/continue · error · Error

AskSage does not support legacy completions API

Error message

AskSage does not support legacy completions API

What it means

AskSage exposes a chat-style API only; the adapter's completionNonStream (legacy /v1/completions style) is a stub that throws immediately. Convert requests to chat completions.

Source

Thrown at packages/openai-adapters/src/apis/AskSage.ts:471

      yield chatChunk({
        content: null,
        model: body.model,
        finish_reason:
          validToolCalls && validToolCalls.length > 0 ? "tool_calls" : "stop",
      });
    } catch (error) {
      if (error instanceof Error) {
        throw new Error(`AskSage client error: ${error.message}`);
      }
      throw error;
    }
  }

  completionNonStream(
    _body: CompletionCreateParamsNonStreaming,
    _signal: AbortSignal,
  ): Promise<Completion> {
    throw new Error("AskSage does not support legacy completions API");
  }

  completionStream(
    _body: CompletionCreateParamsStreaming,
    _signal: AbortSignal,
  ): AsyncGenerator<Completion> {
    throw new Error("AskSage does not support legacy completions API");
  }

  fimStream(
    _body: FimCreateParamsStreaming,
    _signal: AbortSignal,
  ): AsyncGenerator<ChatCompletionChunk> {
    throw new Error("AskSage does not support FIM");
  }

  async embed(_body: EmbeddingCreateParams): Promise<CreateEmbeddingResponse> {
    throw new Error("AskSage does not support embeddings");

View on GitHub (pinned to 5522c6f44c)

Solutions

  1. Use chatCompletionNonStream with a messages array
  2. In routing layers, translate prompt→messages for AskSage
  3. Remove legacy completion paths when targeting AskSage

Example fix

// before
const res = await api.completionNonStream({ model: 'gpt-4', prompt: 'Hi' }, signal);

// after
const res = await api.chatCompletionNonStream({ model: 'gpt-4', messages: [{ role: 'user', content: 'Hi' }] }, signal);
Defensive patterns

Strategy: type-guard

Validate before calling

if (api instanceof AskSage) throw new Error('AskSage requires chat completions');

Type guard

function supportsLegacyCompletions(api: BaseApi): boolean { return !(api instanceof AskSage) && !(api instanceof Anthropic); }

Try / catch

try { return await api.completionNonStream(body, signal); }
catch (e) { if (/legacy completions API/.test(String(e))) { return await api.chatCompletionNonStream(toChat(body), signal); } throw e; }

Prevention

When it happens

Trigger: Calling completionNonStream(body, signal) with CompletionCreateParamsNonStreaming on the AskSage adapter.

Common situations: Generic completion routing that defaults to legacy completions; migrating an OpenAI legacy-completions codebase to AskSage.

Related errors


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