diff --git a/src/renderer/src/aiCore/index_new.ts b/src/renderer/src/aiCore/index_new.ts index 81c4aa1df3..d91b8bda24 100644 --- a/src/renderer/src/aiCore/index_new.ts +++ b/src/renderer/src/aiCore/index_new.ts @@ -14,6 +14,7 @@ import { addSpan, endSpan } from '@renderer/services/SpanManagerService' import { StartSpanParams } from '@renderer/trace/types/ModelSpanEntity' import type { Assistant, GenerateImageParams, Model, Provider } from '@renderer/types' import type { AiSdkModel, StreamTextParams } from '@renderer/types/aiCoreTypes' +import { CreateVideoParams, CreateVideoResult } from '@renderer/types/video' import { buildClaudeCodeSystemModelMessage } from '@shared/anthropic' import { type ImageModel, type LanguageModel, type Provider as AiSdkProvider, wrapLanguageModel } from 'ai' @@ -500,6 +501,13 @@ export default class ModernAiProvider { return images } + /** + * We manually implement this method before aisdk supports it well + */ + public async createVideo(params: CreateVideoParams): Promise { + return this.legacyProvider.createVideo(params) + } + public getBaseURL(): string { return this.legacyProvider.getBaseURL() } diff --git a/src/renderer/src/aiCore/legacy/clients/openai/OpenAIResponseAPIClient.ts b/src/renderer/src/aiCore/legacy/clients/openai/OpenAIResponseAPIClient.ts index 9e400a9f8d..bb2ce088ac 100644 --- a/src/renderer/src/aiCore/legacy/clients/openai/OpenAIResponseAPIClient.ts +++ b/src/renderer/src/aiCore/legacy/clients/openai/OpenAIResponseAPIClient.ts @@ -34,6 +34,7 @@ import { OpenAIResponseSdkTool, OpenAIResponseSdkToolCall } from '@renderer/types/sdk' +import { CreateVideoParams } from '@renderer/types/video' import { addImageFileToContents } from '@renderer/utils/formats' import { isSupportedToolUse, @@ -152,6 +153,11 @@ export class OpenAIResponseAPIClient extends OpenAIBaseClient< return await sdk.responses.create(payload, options) } + public async createVideo(params: CreateVideoParams) { + // TODO: implement it + throw new Error('Not implemented') + } + private async handlePdfFile(file: FileMetadata): Promise { if (file.size > 32 * MB) return undefined try { diff --git a/src/renderer/src/aiCore/legacy/index.ts b/src/renderer/src/aiCore/legacy/index.ts index adc81f03ad..37e5e5bc01 100644 --- a/src/renderer/src/aiCore/legacy/index.ts +++ b/src/renderer/src/aiCore/legacy/index.ts @@ -7,6 +7,7 @@ import { withSpanResult } from '@renderer/services/SpanManagerService' import { StartSpanParams } from '@renderer/trace/types/ModelSpanEntity' import type { GenerateImageParams, Model, Provider } from '@renderer/types' import type { RequestOptions, SdkModel } from '@renderer/types/sdk' +import { CreateVideoParams, CreateVideoResult } from '@renderer/types/video' import { isSupportedToolUse } from '@renderer/utils/mcp-tools' import { AihubmixAPIClient } from './clients/aihubmix/AihubmixAPIClient' @@ -179,6 +180,15 @@ export default class AiProvider { return this.apiClient.generateImage(params) } + public async createVideo(params: CreateVideoParams): Promise { + throw new Error('Not implemented') + // if (this.apiClient instanceof OpenAIResponseAPIClient) { + // return this.apiClient.createVideo(params) + // } else { + // throw new Error('Video generation is not supported by this provider') + // } + } + public getBaseURL(): string { return this.apiClient.getBaseURL() } diff --git a/src/renderer/src/types/video.ts b/src/renderer/src/types/video.ts new file mode 100644 index 0000000000..13dcb956b5 --- /dev/null +++ b/src/renderer/src/types/video.ts @@ -0,0 +1,10 @@ +export type CreateVideoRequest = { + type: 'openai' +} + +export type CreateVideoParams = { + providerId: string + modelId: string +} + +export type CreateVideoResult = {}