{"record":{"id":"11a91db8e26eab46","repo":"continuedev/continue","slug":"asksage-does-not-support-legacy-completions-api","errorCode":null,"errorMessage":"AskSage does not support legacy completions API","messagePattern":"AskSage does not support legacy completions API","errorType":"exception","errorClass":"Error","httpStatus":null,"severity":"error","filePath":"packages/openai-adapters/src/apis/AskSage.ts","lineNumber":471,"sourceCode":"      yield chatChunk({\n        content: null,\n        model: body.model,\n        finish_reason:\n          validToolCalls && validToolCalls.length > 0 ? \"tool_calls\" : \"stop\",\n      });\n    } catch (error) {\n      if (error instanceof Error) {\n        throw new Error(`AskSage client error: ${error.message}`);\n      }\n      throw error;\n    }\n  }\n\n  completionNonStream(\n    _body: CompletionCreateParamsNonStreaming,\n    _signal: AbortSignal,\n  ): Promise<Completion> {\n    throw new Error(\"AskSage does not support legacy completions API\");\n  }\n\n  completionStream(\n    _body: CompletionCreateParamsStreaming,\n    _signal: AbortSignal,\n  ): AsyncGenerator<Completion> {\n    throw new Error(\"AskSage does not support legacy completions API\");\n  }\n\n  fimStream(\n    _body: FimCreateParamsStreaming,\n    _signal: AbortSignal,\n  ): AsyncGenerator<ChatCompletionChunk> {\n    throw new Error(\"AskSage does not support FIM\");\n  }\n\n  async embed(_body: EmbeddingCreateParams): Promise<CreateEmbeddingResponse> {\n    throw new Error(\"AskSage does not support embeddings\");","sourceCodeStart":453,"sourceCodeEnd":489,"githubUrl":"https://github.com/continuedev/continue/blob/5522c6f44ca0ac3528b37244818fbfa39b5af470/packages/openai-adapters/src/apis/AskSage.ts#L453-L489","documentation":"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.","triggerScenarios":"Calling completionNonStream(body, signal) with CompletionCreateParamsNonStreaming on the AskSage adapter.","commonSituations":"Generic completion routing that defaults to legacy completions; migrating an OpenAI legacy-completions codebase to AskSage.","solutions":["Use chatCompletionNonStream with a messages array","In routing layers, translate prompt→messages for AskSage","Remove legacy completion paths when targeting AskSage"],"exampleFix":"// before\nconst res = await api.completionNonStream({ model: 'gpt-4', prompt: 'Hi' }, signal);\n\n// after\nconst res = await api.chatCompletionNonStream({ model: 'gpt-4', messages: [{ role: 'user', content: 'Hi' }] }, signal);","handlingStrategy":"type-guard","validationCode":"if (api instanceof AskSage) throw new Error('AskSage requires chat completions');","typeGuard":"function supportsLegacyCompletions(api: BaseApi): boolean { return !(api instanceof AskSage) && !(api instanceof Anthropic); }","tryCatchPattern":"try { return await api.completionNonStream(body, signal); }\ncatch (e) { if (/legacy completions API/.test(String(e))) { return await api.chatCompletionNonStream(toChat(body), signal); } throw e; }","preventionTips":["Translate prompt→messages centrally for AskSage","Prefer chat completions in all new code"],"tags":["asksage","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"}