11import { Anthropic } from "@anthropic-ai/sdk"
22import OpenAI from "openai"
33
4- import { rooDefaultModelId , getApiProtocol } from "@roo-code/types"
4+ import { rooDefaultModelId , getApiProtocol , type ImageGenerationApiMethod } from "@roo-code/types"
55import { CloudService } from "@roo-code/cloud"
66
77import type { ApiHandlerOptions , ModelRecord } from "../../shared/api"
@@ -15,7 +15,7 @@ import type { ApiHandlerCreateMessageMetadata } from "../index"
1515import { BaseOpenAiCompatibleProvider } from "./base-openai-compatible-provider"
1616import { getModels , getModelsFromCache } from "../providers/fetchers/modelCache"
1717import { handleOpenAIError } from "./utils/openai-error-handler"
18- import { generateImageWithProvider , ImageGenerationResult } from "./utils/image-generation"
18+ import { generateImageWithProvider , generateImageWithImagesApi , ImageGenerationResult } from "./utils/image-generation"
1919import { t } from "../../i18n"
2020
2121// Extend OpenAI's CompletionUsage to include Roo specific fields
@@ -273,9 +273,15 @@ export class RooHandler extends BaseOpenAiCompatibleProvider<string> {
273273 * @param prompt The text prompt for image generation
274274 * @param model The model to use for generation
275275 * @param inputImage Optional base64 encoded input image data URL
276+ * @param apiMethod The API method to use (chat_completions or images_api)
276277 * @returns The generated image data and format, or an error
277278 */
278- async generateImage ( prompt : string , model : string , inputImage ?: string ) : Promise < ImageGenerationResult > {
279+ async generateImage (
280+ prompt : string ,
281+ model : string ,
282+ inputImage ?: string ,
283+ apiMethod ?: ImageGenerationApiMethod ,
284+ ) : Promise < ImageGenerationResult > {
279285 const sessionToken = getSessionToken ( )
280286
281287 if ( ! sessionToken || sessionToken === "unauthenticated" ) {
@@ -285,8 +291,23 @@ export class RooHandler extends BaseOpenAiCompatibleProvider<string> {
285291 }
286292 }
287293
294+ const baseURL = `${ this . fetcherBaseURL } /v1`
295+
296+ // Use the specified API method, defaulting to chat_completions for backward compatibility
297+ if ( apiMethod === "images_api" ) {
298+ return generateImageWithImagesApi ( {
299+ baseURL,
300+ authToken : sessionToken ,
301+ model,
302+ prompt,
303+ inputImage,
304+ outputFormat : "png" ,
305+ } )
306+ }
307+
308+ // Default to chat completions approach
288309 return generateImageWithProvider ( {
289- baseURL : ` ${ this . fetcherBaseURL } /v1` ,
310+ baseURL,
290311 authToken : sessionToken ,
291312 model,
292313 prompt,
0 commit comments