import { persistImageWorkflowTurn, persistVideoGenerationCompletedTurn, persistVideoGenerationFailedTurn, } from "@/lib/ai/conversation-state-protocol"; import type { DirectAgentToolCapability } from "@/lib/ai/runtime/direct-agent-execution"; export async function safePersistDirectAgentAnalyzeTurn(params: { userId: string; chatId: string; projectId?: string | null; currentSubIntent?: string | null; targetAssetIds?: string[] | null; targetImageUrls: string[]; messageId: string; requestTextContent: string; }) { try { const targetImageUrls = params.targetImageUrls.length > 0 ? params.targetImageUrls : null; await persistImageWorkflowTurn({ userId: params.userId, chatId: params.chatId, projectId: params.projectId || null, currentIntent: "vision", currentSubIntent: params.currentSubIntent || "analyze", currentFocusAssetIds: params.targetAssetIds || null, currentFocusImageUrls: targetImageUrls, lastResolvedTargetAssetIds: params.targetAssetIds || null, lastResolvedTargetImageUrls: targetImageUrls, lastMessageId: params.messageId, lastUserPrompt: params.requestTextContent, lastSourceImageUrls: targetImageUrls, }); } catch (memoryError) { console.warn("[Direct Agent Working State] Failed to persist analyze turn:", memoryError); } } export async function safePersistDirectAgentImageEditTurn(params: { userId: string; chatId: string; projectId?: string | null; capability: DirectAgentToolCapability; currentSubIntent?: string | null; resultAssetId?: string | null; resultOriginalUrl?: string | null; resultImageSize?: string | null; sourceImageUrls: string[]; messageId: string; requestTextContent: string; optimizedPrompt?: string | null; }) { try { const resultAssetIds = params.resultAssetId ? [params.resultAssetId] : null; const resultImageUrls = params.resultOriginalUrl ? [params.resultOriginalUrl] : null; await persistImageWorkflowTurn({ userId: params.userId, chatId: params.chatId, projectId: params.projectId || null, currentIntent: "image_edit", currentSubIntent: params.currentSubIntent || params.capability, currentFocusAssetIds: resultAssetIds, currentFocusImageUrls: resultImageUrls, lastGeneratedAssetIds: resultAssetIds, lastGeneratedImageUrls: resultImageUrls, lastResolvedTargetAssetIds: resultAssetIds, lastResolvedTargetImageUrls: resultImageUrls, lastMessageId: params.messageId, lastUserPrompt: params.requestTextContent, lastOptimizedPrompt: params.optimizedPrompt || undefined, lastRequestedImageCount: resultImageUrls?.length || 1, lastImageSize: params.resultImageSize || undefined, lastSourceImageUrls: params.sourceImageUrls, lastResultImageUrls: resultImageUrls, }); } catch (memoryError) { console.warn( `[Direct Agent Working State] Failed to persist image edit turn after ${params.capability}:`, memoryError, ); } } export async function safePersistDirectAgentVideoCompletedTurn(params: { userId: string; chatId: string; projectId?: string | null; messageId: string; requestTextContent: string; modelRef: string; mode: string; temporaryVideoUrl: string; }) { try { await persistVideoGenerationCompletedTurn({ userId: params.userId, chatId: params.chatId, projectId: params.projectId || null, messageId: params.messageId, text: params.requestTextContent, source: "agent_direct_generate_video", providerType: "direct-video", modelRef: params.modelRef, mode: params.mode as any, status: "completed", temporaryVideoUrl: params.temporaryVideoUrl, }); } catch (memoryError) { console.warn( "[Direct Agent Working State] Failed to persist direct video generation:", memoryError, ); } } export async function safePersistDirectAgentVideoFailedTurn(params: { userId: string; chatId: string; projectId?: string | null; messageId: string; requestTextContent: string; modelRef: string; error: unknown; }) { try { await persistVideoGenerationFailedTurn({ userId: params.userId, chatId: params.chatId, projectId: params.projectId || null, messageId: params.messageId, text: params.requestTextContent, source: "agent_direct_generate_video", providerType: "direct-video", modelRef: params.modelRef, status: "failed", error: params.error instanceof Error ? params.error.message : String(params.error), }); } catch (videoMemoryError) { console.warn( "[Direct Agent Working State] Failed to persist direct video failure:", videoMemoryError, ); } }