refactor(media): share duplicate guard action results

This commit is contained in:
Vincent Koc
2026-06-23 07:49:58 +08:00
parent 3675c01410
commit a70dae40b7
4 changed files with 52 additions and 51 deletions

View File

@@ -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),
},
};
}

View File

@@ -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;

View File

@@ -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),
},
};
}

View File

@@ -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),
},
};
}