(options: {
adapter: TAdapter & { kind: typeof kind }
jobId: string
})
| 582 | * ``` |
| 583 | */ |
| 584 | export async function getVideoJobStatus< |
| 585 | TAdapter extends VideoAdapter<string, any, any, any>, |
| 586 | >(options: { |
| 587 | adapter: TAdapter & { kind: typeof kind } |
| 588 | jobId: string |
| 589 | }): Promise<{ |
| 590 | status: 'pending' | 'processing' | 'completed' | 'failed' |
| 591 | progress?: number |
| 592 | url?: string |
| 593 | error?: string |
| 594 | usage?: TokenUsage |
| 595 | }> { |
| 596 | const { adapter, jobId } = options |
| 597 | const requestId = createId('video-status') |
| 598 | const startTime = Date.now() |
| 599 | |
| 600 | aiEventClient.emit('video:request:started', { |
| 601 | requestId, |
| 602 | provider: adapter.name, |
| 603 | model: adapter.model, |
| 604 | requestType: 'status', |
| 605 | jobId, |
| 606 | timestamp: startTime, |
| 607 | }) |
| 608 | |
| 609 | // Get status first |
| 610 | const statusResult = await adapter.getVideoStatus(jobId) |
| 611 | |
| 612 | // If completed, also get the URL |
| 613 | if (statusResult.status === 'completed') { |
| 614 | try { |
| 615 | const urlResult = await adapter.getVideoUrl(jobId) |
| 616 | aiEventClient.emit('video:request:completed', { |
| 617 | requestId, |
| 618 | provider: adapter.name, |
| 619 | model: adapter.model, |
| 620 | requestType: 'status', |
| 621 | jobId, |
| 622 | status: statusResult.status, |
| 623 | progress: statusResult.progress, |
| 624 | url: urlResult.url, |
| 625 | duration: Date.now() - startTime, |
| 626 | timestamp: Date.now(), |
| 627 | }) |
| 628 | if (urlResult.usage) { |
| 629 | aiEventClient.emit('video:usage', { |
| 630 | requestId, |
| 631 | model: adapter.model, |
| 632 | usage: urlResult.usage, |
| 633 | timestamp: Date.now(), |
| 634 | }) |
| 635 | } |
| 636 | return { |
| 637 | status: statusResult.status, |
| 638 | progress: statusResult.progress, |
| 639 | url: urlResult.url, |
| 640 | ...(urlResult.usage ? { usage: urlResult.usage } : {}), |
| 641 | } |
no test coverage detected