refactor(video): restructure video types and add createVideo service

- Split video types into base interfaces and OpenAI-specific implementations
- Add new createVideo service function to handle video creation
This commit is contained in:
icarus 2025-10-12 00:37:23 +08:00
parent 833d2d9276
commit 9931856a1f
2 changed files with 33 additions and 3 deletions

View File

@ -16,6 +16,7 @@ import type { StreamTextParams } from '@renderer/types/aiCoreTypes'
import { type Chunk, ChunkType } from '@renderer/types/chunk'
import { Message } from '@renderer/types/newMessage'
import { SdkModel } from '@renderer/types/sdk'
import { CreateVideoParams, CreateVideoResult } from '@renderer/types/video'
import { removeSpecialCharactersForTopicName, uuid } from '@renderer/utils'
import { abortCompletion, readyToAbort } from '@renderer/utils/abortController'
import { isAbortError } from '@renderer/utils/error'
@ -397,6 +398,11 @@ export async function fetchGenerate({
}
}
export async function createVideo(params: CreateVideoParams): Promise<CreateVideoResult> {
const ai = new AiProviderNew(params.provider)
return ai.createVideo(params)
}
export function hasApiKey(provider: Provider) {
if (!provider) return false
if (['ollama', 'lmstudio', 'vertexai', 'cherryai'].includes(provider.id)) return true

View File

@ -1,6 +1,30 @@
import OpenAI from '@cherrystudio/openai'
// Only OpenAI for now.
export type CreateVideoParams = { params: OpenAI.VideoCreateParams; options?: OpenAI.RequestOptions }
import { Provider } from './provider'
export type CreateVideoResult = OpenAI.Videos.Video
// Only OpenAI (Responses) is supported for now.
export type VideoEndpointType = 'openai'
interface CreateVideoBaseParams {
type: VideoEndpointType
provider: Provider
}
export interface OpenAICreateVideoParams extends CreateVideoBaseParams {
type: 'openai'
params: OpenAI.VideoCreateParams
options?: OpenAI.RequestOptions
}
export type CreateVideoParams = OpenAICreateVideoParams
interface CreateVideoBaseResult {
type: VideoEndpointType
}
export interface OpenAICreateVideoResult extends CreateVideoBaseResult {
type: 'openai'
video: OpenAI.Videos.Video
}
export type CreateVideoResult = OpenAICreateVideoResult