feat(video): add video creation types and stubs for future implementation

This commit is contained in:
icarus 2025-10-11 17:57:19 +08:00
parent c6a0ad3fc0
commit 1c53222582
4 changed files with 34 additions and 0 deletions

View File

@ -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<CreateVideoResult> {
return this.legacyProvider.createVideo(params)
}
public getBaseURL(): string {
return this.legacyProvider.getBaseURL()
}

View File

@ -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<OpenAI.Responses.ResponseInputFile | undefined> {
if (file.size > 32 * MB) return undefined
try {

View File

@ -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<CreateVideoResult> {
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()
}

View File

@ -0,0 +1,10 @@
export type CreateVideoRequest = {
type: 'openai'
}
export type CreateVideoParams = {
providerId: string
modelId: string
}
export type CreateVideoResult = {}