feat(server): wire quality/count params and layered document generator

Map imageQuality/imageCount and output_format across the HTTP and
WebSocket handlers, pass them into the design service calls, and register
the layered document generator in the service context.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-07-09 20:43:20 +08:00
parent 41208e566c
commit f0ae237da5
7 changed files with 43 additions and 18 deletions
+17
View File
@@ -59,6 +59,7 @@ func NewServiceContext(c config.Config) *ServiceContext {
textExtractor := newTextExtractor(c)
service := application.NewDesignService(repo, agentRunner, assets, researcher, textExtractor, creativeAgent)
service.SetBackgroundRemover(newBackgroundRemover(c))
service.SetLayeredDocumentGenerator(newLayeredDocumentGenerator(c))
service.SetObjectRecognizer(newObjectRecognizer(c))
if mockupAnalyzer, ok := creativeAgent.(design.MockupModelAnalyzer); ok {
service.SetMockupModelAnalyzer(mockupAnalyzer)
@@ -317,6 +318,22 @@ func newImageGenerator(c config.Config) piagent.ImageGenerator {
return client
}
func newLayeredDocumentGenerator(c config.Config) design.LayeredDocumentGenerator {
opts := c.Agent.Image
apiKey := resolveImageAPIKey(opts)
client := piagent.NewImageClient(piagent.ImageClientOptions{
BaseURL: opts.BaseURL,
APIKey: apiKey,
InputImageTransport: opts.InputImageTransport,
TimeoutSeconds: opts.TimeoutSeconds,
ResponseHeaderTimeoutSeconds: opts.ResponseHeaderTimeoutSeconds,
})
if client == nil {
return nil
}
return client
}
func newTextExtractor(c config.Config) design.TextExtractor {
opts := c.Agent.Text
switch opts.Driver {