mirror of
https://github.com/openclaw/openclaw.git
synced 2026-06-26 01:09:31 +00:00
refactor(media): share duplicate guard action results
This commit is contained in:
@@ -17,6 +17,7 @@ import {
|
||||
listActiveImageGenerationTasksForSession,
|
||||
} from "../image-generation-task-status.js";
|
||||
import {
|
||||
createMediaGenerateDuplicateGuardResult,
|
||||
createMediaGenerateProviderListActionResult,
|
||||
createMediaGenerateTaskStatusActions,
|
||||
type MediaGenerateActionResult,
|
||||
@@ -121,24 +122,12 @@ export function createImageGenerateDuplicateGuardResult(
|
||||
sessionKey?: string,
|
||||
params?: { prompt?: string; requestKey?: string },
|
||||
): ImageGenerateActionResult | undefined {
|
||||
const blockingTask = findDuplicateGuardImageGenerationTaskForSession(sessionKey, {
|
||||
return createMediaGenerateDuplicateGuardResult({
|
||||
sessionKey,
|
||||
prompt: params?.prompt,
|
||||
requestKey: params?.requestKey,
|
||||
findDuplicateTask: findDuplicateGuardImageGenerationTaskForSession,
|
||||
buildStatusText: buildImageGenerationTaskStatusText,
|
||||
buildStatusDetails: buildImageGenerationTaskStatusDetails,
|
||||
});
|
||||
if (!blockingTask) {
|
||||
return undefined;
|
||||
}
|
||||
return {
|
||||
content: [
|
||||
{
|
||||
type: "text",
|
||||
text: buildImageGenerationTaskStatusText(blockingTask, { duplicateGuard: true }),
|
||||
},
|
||||
],
|
||||
details: {
|
||||
action: "status",
|
||||
duplicateGuard: true,
|
||||
...buildImageGenerationTaskStatusDetails(blockingTask),
|
||||
},
|
||||
};
|
||||
}
|
||||
|
||||
@@ -143,6 +143,40 @@ export function createMediaGenerateTaskStatusActions<Task>(params: {
|
||||
};
|
||||
}
|
||||
|
||||
/** Builds duplicate-guard status output for a media generation task type. */
|
||||
export function createMediaGenerateDuplicateGuardResult<Task>(params: {
|
||||
sessionKey?: string;
|
||||
prompt?: string;
|
||||
requestKey?: string;
|
||||
findDuplicateTask: (
|
||||
sessionKey?: string,
|
||||
params?: { prompt?: string; requestKey?: string },
|
||||
) => Task | undefined;
|
||||
buildStatusText: TaskStatusTextBuilder<Task>;
|
||||
buildStatusDetails: (task: Task) => Record<string, unknown>;
|
||||
}): MediaGenerateActionResult | undefined {
|
||||
const blockingTask = params.findDuplicateTask(params.sessionKey, {
|
||||
prompt: params.prompt,
|
||||
requestKey: params.requestKey,
|
||||
});
|
||||
if (!blockingTask) {
|
||||
return undefined;
|
||||
}
|
||||
return {
|
||||
content: [
|
||||
{
|
||||
type: "text",
|
||||
text: params.buildStatusText(blockingTask, { duplicateGuard: true }),
|
||||
},
|
||||
],
|
||||
details: {
|
||||
action: "status",
|
||||
duplicateGuard: true,
|
||||
...params.buildStatusDetails(blockingTask),
|
||||
},
|
||||
};
|
||||
}
|
||||
|
||||
function createMediaGenerateStatusActionResult<Task>(params: {
|
||||
sessionKey?: string;
|
||||
inactiveText: string;
|
||||
|
||||
@@ -14,6 +14,7 @@ import {
|
||||
findDuplicateGuardMusicGenerationTaskForSession,
|
||||
} from "../music-generation-task-status.js";
|
||||
import {
|
||||
createMediaGenerateDuplicateGuardResult,
|
||||
createMediaGenerateProviderListActionResult,
|
||||
createMediaGenerateTaskStatusActions,
|
||||
type MediaGenerateActionResult,
|
||||
@@ -100,24 +101,12 @@ export function createMusicGenerateDuplicateGuardResult(
|
||||
sessionKey?: string,
|
||||
params?: { prompt?: string; requestKey?: string },
|
||||
): MusicGenerateActionResult | undefined {
|
||||
const blockingTask = findDuplicateGuardMusicGenerationTaskForSession(sessionKey, {
|
||||
return createMediaGenerateDuplicateGuardResult({
|
||||
sessionKey,
|
||||
prompt: params?.prompt,
|
||||
requestKey: params?.requestKey,
|
||||
findDuplicateTask: findDuplicateGuardMusicGenerationTaskForSession,
|
||||
buildStatusText: buildMusicGenerationTaskStatusText,
|
||||
buildStatusDetails: buildMusicGenerationTaskStatusDetails,
|
||||
});
|
||||
if (!blockingTask) {
|
||||
return undefined;
|
||||
}
|
||||
return {
|
||||
content: [
|
||||
{
|
||||
type: "text",
|
||||
text: buildMusicGenerationTaskStatusText(blockingTask, { duplicateGuard: true }),
|
||||
},
|
||||
],
|
||||
details: {
|
||||
action: "status",
|
||||
duplicateGuard: true,
|
||||
...buildMusicGenerationTaskStatusDetails(blockingTask),
|
||||
},
|
||||
};
|
||||
}
|
||||
|
||||
@@ -14,6 +14,7 @@ import {
|
||||
findDuplicateGuardVideoGenerationTaskForSession,
|
||||
} from "../video-generation-task-status.js";
|
||||
import {
|
||||
createMediaGenerateDuplicateGuardResult,
|
||||
createMediaGenerateProviderListActionResult,
|
||||
createMediaGenerateTaskStatusActions,
|
||||
type MediaGenerateActionResult,
|
||||
@@ -119,24 +120,12 @@ export function createVideoGenerateDuplicateGuardResult(
|
||||
sessionKey?: string,
|
||||
params?: { prompt?: string; requestKey?: string },
|
||||
): VideoGenerateActionResult | undefined {
|
||||
const blockingTask = findDuplicateGuardVideoGenerationTaskForSession(sessionKey, {
|
||||
return createMediaGenerateDuplicateGuardResult({
|
||||
sessionKey,
|
||||
prompt: params?.prompt,
|
||||
requestKey: params?.requestKey,
|
||||
findDuplicateTask: findDuplicateGuardVideoGenerationTaskForSession,
|
||||
buildStatusText: buildVideoGenerationTaskStatusText,
|
||||
buildStatusDetails: buildVideoGenerationTaskStatusDetails,
|
||||
});
|
||||
if (!blockingTask) {
|
||||
return undefined;
|
||||
}
|
||||
return {
|
||||
content: [
|
||||
{
|
||||
type: "text",
|
||||
text: buildVideoGenerationTaskStatusText(blockingTask, { duplicateGuard: true }),
|
||||
},
|
||||
],
|
||||
details: {
|
||||
action: "status",
|
||||
duplicateGuard: true,
|
||||
...buildVideoGenerationTaskStatusDetails(blockingTask),
|
||||
},
|
||||
};
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user