mirror of
https://github.com/openclaw/openclaw.git
synced 2026-04-27 09:02:15 +00:00
refactor(agents): share media background task lifecycle
This commit is contained in:
@@ -27,6 +27,42 @@ export type MediaGenerationTaskHandle = {
|
||||
taskLabel: string;
|
||||
};
|
||||
|
||||
type CreateMediaGenerationTaskRunParams = {
|
||||
sessionKey?: string;
|
||||
requesterOrigin?: DeliveryContext;
|
||||
prompt: string;
|
||||
providerId?: string;
|
||||
};
|
||||
|
||||
type RecordMediaGenerationTaskProgressParams = {
|
||||
handle: MediaGenerationTaskHandle | null;
|
||||
progressSummary: string;
|
||||
eventSummary?: string;
|
||||
};
|
||||
|
||||
type CompleteMediaGenerationTaskRunParams = {
|
||||
handle: MediaGenerationTaskHandle | null;
|
||||
provider: string;
|
||||
model: string;
|
||||
count: number;
|
||||
paths: string[];
|
||||
};
|
||||
|
||||
type FailMediaGenerationTaskRunParams = {
|
||||
handle: MediaGenerationTaskHandle | null;
|
||||
error: unknown;
|
||||
};
|
||||
|
||||
type WakeMediaGenerationTaskCompletionParams = {
|
||||
config?: OpenClawConfig;
|
||||
handle: MediaGenerationTaskHandle | null;
|
||||
status: "ok" | "error";
|
||||
statusLabel: string;
|
||||
result: string;
|
||||
mediaUrls?: string[];
|
||||
statsLine?: string;
|
||||
};
|
||||
|
||||
export function createMediaGenerationTaskRun(params: {
|
||||
sessionKey?: string;
|
||||
requesterOrigin?: DeliveryContext;
|
||||
@@ -292,3 +328,55 @@ export async function wakeMediaGenerationTaskCompletion(params: {
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
export function createMediaGenerationTaskLifecycle(params: {
|
||||
toolName: string;
|
||||
taskKind: string;
|
||||
label: string;
|
||||
queuedProgressSummary: string;
|
||||
generatedLabel: string;
|
||||
failureProgressSummary: string;
|
||||
eventSource: AgentInternalEvent["source"];
|
||||
announceType: string;
|
||||
completionLabel: string;
|
||||
}) {
|
||||
return {
|
||||
createTaskRun(runParams: CreateMediaGenerationTaskRunParams): MediaGenerationTaskHandle | null {
|
||||
return createMediaGenerationTaskRun({
|
||||
...runParams,
|
||||
toolName: params.toolName,
|
||||
taskKind: params.taskKind,
|
||||
label: params.label,
|
||||
queuedProgressSummary: params.queuedProgressSummary,
|
||||
});
|
||||
},
|
||||
|
||||
recordTaskProgress(progressParams: RecordMediaGenerationTaskProgressParams) {
|
||||
recordMediaGenerationTaskProgress(progressParams);
|
||||
},
|
||||
|
||||
completeTaskRun(completionParams: CompleteMediaGenerationTaskRunParams) {
|
||||
completeMediaGenerationTaskRun({
|
||||
...completionParams,
|
||||
generatedLabel: params.generatedLabel,
|
||||
});
|
||||
},
|
||||
|
||||
failTaskRun(failureParams: FailMediaGenerationTaskRunParams) {
|
||||
failMediaGenerationTaskRun({
|
||||
...failureParams,
|
||||
progressSummary: params.failureProgressSummary,
|
||||
});
|
||||
},
|
||||
|
||||
async wakeTaskCompletion(completionParams: WakeMediaGenerationTaskCompletionParams) {
|
||||
await wakeMediaGenerationTaskCompletion({
|
||||
...completionParams,
|
||||
eventSource: params.eventSource,
|
||||
announceType: params.announceType,
|
||||
toolName: params.toolName,
|
||||
completionLabel: params.completionLabel,
|
||||
});
|
||||
},
|
||||
};
|
||||
}
|
||||
|
||||
@@ -1,65 +1,31 @@
|
||||
import type { OpenClawConfig } from "../../config/config.js";
|
||||
import type { DeliveryContext } from "../../utils/delivery-context.js";
|
||||
import { MUSIC_GENERATION_TASK_KIND } from "../music-generation-task-status.js";
|
||||
import {
|
||||
completeMediaGenerationTaskRun,
|
||||
createMediaGenerationTaskRun,
|
||||
failMediaGenerationTaskRun,
|
||||
recordMediaGenerationTaskProgress,
|
||||
wakeMediaGenerationTaskCompletion,
|
||||
createMediaGenerationTaskLifecycle,
|
||||
type MediaGenerationTaskHandle,
|
||||
} from "./media-generate-background-shared.js";
|
||||
|
||||
export type MusicGenerationTaskHandle = MediaGenerationTaskHandle;
|
||||
|
||||
export function createMusicGenerationTaskRun(params: {
|
||||
sessionKey?: string;
|
||||
requesterOrigin?: DeliveryContext;
|
||||
prompt: string;
|
||||
providerId?: string;
|
||||
}): MusicGenerationTaskHandle | null {
|
||||
return createMediaGenerationTaskRun({
|
||||
sessionKey: params.sessionKey,
|
||||
requesterOrigin: params.requesterOrigin,
|
||||
prompt: params.prompt,
|
||||
providerId: params.providerId,
|
||||
toolName: "music_generate",
|
||||
taskKind: MUSIC_GENERATION_TASK_KIND,
|
||||
label: "Music generation",
|
||||
queuedProgressSummary: "Queued music generation",
|
||||
});
|
||||
}
|
||||
const musicGenerationTaskLifecycle = createMediaGenerationTaskLifecycle({
|
||||
toolName: "music_generate",
|
||||
taskKind: MUSIC_GENERATION_TASK_KIND,
|
||||
label: "Music generation",
|
||||
queuedProgressSummary: "Queued music generation",
|
||||
generatedLabel: "track",
|
||||
failureProgressSummary: "Music generation failed",
|
||||
eventSource: "music_generation",
|
||||
announceType: "music generation task",
|
||||
completionLabel: "music",
|
||||
});
|
||||
|
||||
export function recordMusicGenerationTaskProgress(params: {
|
||||
handle: MusicGenerationTaskHandle | null;
|
||||
progressSummary: string;
|
||||
eventSummary?: string;
|
||||
}) {
|
||||
recordMediaGenerationTaskProgress(params);
|
||||
}
|
||||
export const createMusicGenerationTaskRun = musicGenerationTaskLifecycle.createTaskRun;
|
||||
|
||||
export function completeMusicGenerationTaskRun(params: {
|
||||
handle: MusicGenerationTaskHandle | null;
|
||||
provider: string;
|
||||
model: string;
|
||||
count: number;
|
||||
paths: string[];
|
||||
}) {
|
||||
completeMediaGenerationTaskRun({
|
||||
...params,
|
||||
generatedLabel: "track",
|
||||
});
|
||||
}
|
||||
export const recordMusicGenerationTaskProgress = musicGenerationTaskLifecycle.recordTaskProgress;
|
||||
|
||||
export function failMusicGenerationTaskRun(params: {
|
||||
handle: MusicGenerationTaskHandle | null;
|
||||
error: unknown;
|
||||
}) {
|
||||
failMediaGenerationTaskRun({
|
||||
...params,
|
||||
progressSummary: "Music generation failed",
|
||||
});
|
||||
}
|
||||
export const completeMusicGenerationTaskRun = musicGenerationTaskLifecycle.completeTaskRun;
|
||||
|
||||
export const failMusicGenerationTaskRun = musicGenerationTaskLifecycle.failTaskRun;
|
||||
|
||||
export async function wakeMusicGenerationTaskCompletion(params: {
|
||||
config?: OpenClawConfig;
|
||||
@@ -70,17 +36,5 @@ export async function wakeMusicGenerationTaskCompletion(params: {
|
||||
mediaUrls?: string[];
|
||||
statsLine?: string;
|
||||
}) {
|
||||
await wakeMediaGenerationTaskCompletion({
|
||||
config: params.config,
|
||||
handle: params.handle,
|
||||
status: params.status,
|
||||
statusLabel: params.statusLabel,
|
||||
result: params.result,
|
||||
mediaUrls: params.mediaUrls,
|
||||
statsLine: params.statsLine,
|
||||
eventSource: "music_generation",
|
||||
announceType: "music generation task",
|
||||
toolName: "music_generate",
|
||||
completionLabel: "music",
|
||||
});
|
||||
await musicGenerationTaskLifecycle.wakeTaskCompletion(params);
|
||||
}
|
||||
|
||||
@@ -1,65 +1,31 @@
|
||||
import type { OpenClawConfig } from "../../config/config.js";
|
||||
import type { DeliveryContext } from "../../utils/delivery-context.js";
|
||||
import { VIDEO_GENERATION_TASK_KIND } from "../video-generation-task-status.js";
|
||||
import {
|
||||
completeMediaGenerationTaskRun,
|
||||
createMediaGenerationTaskRun,
|
||||
failMediaGenerationTaskRun,
|
||||
recordMediaGenerationTaskProgress,
|
||||
wakeMediaGenerationTaskCompletion,
|
||||
createMediaGenerationTaskLifecycle,
|
||||
type MediaGenerationTaskHandle,
|
||||
} from "./media-generate-background-shared.js";
|
||||
|
||||
export type VideoGenerationTaskHandle = MediaGenerationTaskHandle;
|
||||
|
||||
export function createVideoGenerationTaskRun(params: {
|
||||
sessionKey?: string;
|
||||
requesterOrigin?: DeliveryContext;
|
||||
prompt: string;
|
||||
providerId?: string;
|
||||
}): VideoGenerationTaskHandle | null {
|
||||
return createMediaGenerationTaskRun({
|
||||
sessionKey: params.sessionKey,
|
||||
requesterOrigin: params.requesterOrigin,
|
||||
prompt: params.prompt,
|
||||
providerId: params.providerId,
|
||||
toolName: "video_generate",
|
||||
taskKind: VIDEO_GENERATION_TASK_KIND,
|
||||
label: "Video generation",
|
||||
queuedProgressSummary: "Queued video generation",
|
||||
});
|
||||
}
|
||||
const videoGenerationTaskLifecycle = createMediaGenerationTaskLifecycle({
|
||||
toolName: "video_generate",
|
||||
taskKind: VIDEO_GENERATION_TASK_KIND,
|
||||
label: "Video generation",
|
||||
queuedProgressSummary: "Queued video generation",
|
||||
generatedLabel: "video",
|
||||
failureProgressSummary: "Video generation failed",
|
||||
eventSource: "video_generation",
|
||||
announceType: "video generation task",
|
||||
completionLabel: "video",
|
||||
});
|
||||
|
||||
export function recordVideoGenerationTaskProgress(params: {
|
||||
handle: VideoGenerationTaskHandle | null;
|
||||
progressSummary: string;
|
||||
eventSummary?: string;
|
||||
}) {
|
||||
recordMediaGenerationTaskProgress(params);
|
||||
}
|
||||
export const createVideoGenerationTaskRun = videoGenerationTaskLifecycle.createTaskRun;
|
||||
|
||||
export function completeVideoGenerationTaskRun(params: {
|
||||
handle: VideoGenerationTaskHandle | null;
|
||||
provider: string;
|
||||
model: string;
|
||||
count: number;
|
||||
paths: string[];
|
||||
}) {
|
||||
completeMediaGenerationTaskRun({
|
||||
...params,
|
||||
generatedLabel: "video",
|
||||
});
|
||||
}
|
||||
export const recordVideoGenerationTaskProgress = videoGenerationTaskLifecycle.recordTaskProgress;
|
||||
|
||||
export function failVideoGenerationTaskRun(params: {
|
||||
handle: VideoGenerationTaskHandle | null;
|
||||
error: unknown;
|
||||
}) {
|
||||
failMediaGenerationTaskRun({
|
||||
...params,
|
||||
progressSummary: "Video generation failed",
|
||||
});
|
||||
}
|
||||
export const completeVideoGenerationTaskRun = videoGenerationTaskLifecycle.completeTaskRun;
|
||||
|
||||
export const failVideoGenerationTaskRun = videoGenerationTaskLifecycle.failTaskRun;
|
||||
|
||||
export async function wakeVideoGenerationTaskCompletion(params: {
|
||||
config?: OpenClawConfig;
|
||||
@@ -70,17 +36,5 @@ export async function wakeVideoGenerationTaskCompletion(params: {
|
||||
mediaUrls?: string[];
|
||||
statsLine?: string;
|
||||
}) {
|
||||
await wakeMediaGenerationTaskCompletion({
|
||||
config: params.config,
|
||||
handle: params.handle,
|
||||
status: params.status,
|
||||
statusLabel: params.statusLabel,
|
||||
result: params.result,
|
||||
mediaUrls: params.mediaUrls,
|
||||
statsLine: params.statsLine,
|
||||
eventSource: "video_generation",
|
||||
announceType: "video generation task",
|
||||
toolName: "video_generate",
|
||||
completionLabel: "video",
|
||||
});
|
||||
await videoGenerationTaskLifecycle.wakeTaskCompletion(params);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user