From 00b70298f2dea57569a320a7a75b78ddb54f89a6 Mon Sep 17 00:00:00 2001 From: liangxu Date: Thu, 9 Jul 2026 20:42:26 +0800 Subject: [PATCH] feat(design): thread image quality, count and layered output through domain Add ImageQuality/ImageCount to AgentRequest, AgentChatRequest and Job, add OutputFormat to GeneratorTaskInputArgs, and introduce the LayeredDocument types and LayeredDocumentGenerator port for PSD output. Co-Authored-By: Claude Opus 4.8 (1M context) --- server/internal/domain/design/agent.go | 54 +++++++++++++++++++------- server/internal/domain/design/jobs.go | 2 + 2 files changed, 41 insertions(+), 15 deletions(-) diff --git a/server/internal/domain/design/agent.go b/server/internal/domain/design/agent.go index d8afe62..ab03d69 100644 --- a/server/internal/domain/design/agent.go +++ b/server/internal/domain/design/agent.go @@ -3,14 +3,16 @@ package design import "context" type AgentRequest struct { - Project Project - Prompt string - Mode string - ImageModel string - ImageSize string - Messages []AgentChatMessage - Memory AgentMemory - TaskPlan AgentTaskPlan + Project Project + Prompt string + Mode string + ImageModel string + ImageSize string + ImageQuality string + ImageCount int + Messages []AgentChatMessage + Memory AgentMemory + TaskPlan AgentTaskPlan } type AgentContent struct { @@ -41,6 +43,8 @@ type AgentChatRequest struct { EnableWebSearch bool ImageModel string ImageSize string + ImageQuality string + ImageCount int Mode string } @@ -60,13 +64,33 @@ type AgentThreadSummary struct { } type GeneratorTaskInputArgs struct { - AspectRatio string - Image []string - ImageURL string - Prompt string - Resolution string - SrcBox *NormalizedBox - DstBox *NormalizedBox + AspectRatio string + Image []string + ImageURL string + OutputFormat string + Prompt string + Resolution string + SrcBox *NormalizedBox + DstBox *NormalizedBox +} + +type LayeredDocumentRequest struct { + ImageURL string + Prompt string + Model string + Size string + OutputFormat string + IdempotencyKey string +} + +type LayeredDocument struct { + Content string + ContentType string + Data []byte +} + +type LayeredDocumentGenerator interface { + GenerateLayeredDocument(ctx context.Context, req LayeredDocumentRequest) (LayeredDocument, error) } type GeneratorTaskSubmitRequest struct { diff --git a/server/internal/domain/design/jobs.go b/server/internal/domain/design/jobs.go index 873168a..603c81f 100644 --- a/server/internal/domain/design/jobs.go +++ b/server/internal/domain/design/jobs.go @@ -24,6 +24,8 @@ type Job struct { Mode string ImageModel string ImageSize string + ImageQuality string + ImageCount int TaskPlan AgentTaskPlan EnableWebSearch bool Isolated bool