


























@@ -1,4 +1,4 @@
1-import { beforeEach, describe, expect, it, vi } from "vitest";
1+import { afterEach, beforeEach, describe, expect, it, vi } from "vitest";
22import { VIDEO_GENERATION_TASK_KIND } from "../video-generation-task-status.js";
33import {
44announceDeliveryMocks,
@@ -21,6 +21,7 @@ const {
2121 recordVideoGenerationTaskProgress,
2222 wakeVideoGenerationTaskCompletion,
2323} = await import("./video-generate-background.js");
24+const { withMediaGenerationTaskKeepalive } = await import("./media-generate-background-shared.js");
24252526describe("video generate background helpers", () => {
2627beforeEach(() => {
@@ -31,6 +32,10 @@ describe("video generate background helpers", () => {
3132});
3233});
333435+afterEach(() => {
36+vi.useRealTimers();
37+});
38+3439it("creates a running task with queued progress text", () => {
3540taskExecutorMocks.createRunningTaskRun.mockReturnValue({
3641taskId: "task-123",
@@ -77,6 +82,42 @@ describe("video generate background helpers", () => {
7782});
7883});
798485+it("keeps long-running media tasks fresh while provider work is pending", async () => {
86+vi.useFakeTimers();
87+let resolveRun!: (value: string) => void;
88+const runPromise = new Promise<string>((resolve) => {
89+resolveRun = resolve;
90+});
91+const task = withMediaGenerationTaskKeepalive({
92+handle: {
93+taskId: "task-123",
94+runId: "tool:video_generate:abc",
95+requesterSessionKey: "agent:main:discord:direct:123",
96+taskLabel: "friendly lobster surfing",
97+},
98+progressSummary: "Generating video",
99+run: () => runPromise,
100+});
101+102+await vi.advanceTimersByTimeAsync(60_000);
103+104+expectRecordedTaskProgress({
105+ taskExecutorMocks,
106+runId: "tool:video_generate:abc",
107+progressSummary: "Generating video",
108+});
109+110+resolveRun("done");
111+await expect(task).resolves.toBe("done");
112+const callsAfterCompletion = taskExecutorMocks.recordTaskRunProgressByRunId.mock.calls.length;
113+114+await vi.advanceTimersByTimeAsync(60_000);
115+116+expect(taskExecutorMocks.recordTaskRunProgressByRunId).toHaveBeenCalledTimes(
117+callsAfterCompletion,
118+);
119+});
120+80121it("queues a completion event by default when direct send is disabled", async () => {
81122announceDeliveryMocks.deliverSubagentAnnouncement.mockResolvedValue({
82123delivered: true,
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。