feat(server): add layer-separation generator task

Introduce the `layer-separation` generator (edit-elements node action)
that splits a source image into a clean background layer, foreground
image artifacts with bounding boxes, and editable text render data.

- New layer_separation.go builds the separated result and artifacts
- SubmitGeneratorTask routes layer-separation and move-object via a
  switch; standalone task completion + polling support
- Extend artifact metadata with BBox and GeneratorName across the
  domain, API types, mapper, .api schema, and API.md
- edit-elements gets a transparent manual-frame placeholder holding the
  separated foreground images and text layers beside the original

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-07-09 12:26:43 +08:00
parent 676e1c4c67
commit 039d166972
9 changed files with 1523 additions and 36 deletions
+10 -8
View File
@@ -417,14 +417,16 @@ type GeneratorTaskArtifact struct {
}
type GeneratorTaskArtifactMetadata struct {
ArtifactId string `json:"artifact_id,optional"`
Format string `json:"format,optional"`
Height int64 `json:"height,optional"`
Label string `json:"label,optional"`
NodeId string `json:"node_id,optional"`
NodeName string `json:"node_name,optional"`
SizeBytes int64 `json:"size_bytes,optional"`
Width int64 `json:"width,optional"`
ArtifactId string `json:"artifact_id,optional"`
BBox []int64 `json:"bbox,optional"`
Format string `json:"format,optional"`
GeneratorName string `json:"generator_name,optional"`
Height int64 `json:"height,optional"`
Label string `json:"label,optional"`
NodeId string `json:"node_id,optional"`
NodeName string `json:"node_name,optional"`
SizeBytes int64 `json:"size_bytes,optional"`
Width int64 `json:"width,optional"`
}
type GeneratorTaskData struct {