Switch to VectorEngine gpt-image-2 and edits
Replace uses of the legacy `gpt-image-2-all` model with `gpt-image-2` and standardize image workflows: no-reference generation uses POST /v1/images/generations, any-reference flows use POST /v1/images/edits with multipart `image` parts. Update SKILLs, generation scripts, decision logs, and docs to reflect the contract change and edits-vs-generations guidance. Apply corresponding changes across backend (api-server match3d/puzzle modules, openai image adapter, mappers, telemetry, spacetime client/module), frontend components and services (Match3D, Puzzle, CreativeImageInputPanel, runtime shells), and add new spritesheet/parser files and tests. Also add media/logo.png. These changes align repository code and documentation with the VectorEngine image API contract and update generation/upload handling (green-screen -> alpha processing, spritesheet handling, and related tests).
This commit is contained in:
@@ -282,13 +282,25 @@ pub(super) fn map_match3d_image_view_from_work(
|
||||
pub(super) fn map_match3d_background_asset_for_agent(
|
||||
asset: Match3DGeneratedBackgroundAsset,
|
||||
) -> shared_contracts::match3d_agent::Match3DGeneratedBackgroundAssetResponse {
|
||||
let ui_spritesheet_image_src = asset.ui_spritesheet_image_src.clone();
|
||||
let ui_spritesheet_image_object_key = asset.ui_spritesheet_image_object_key.clone();
|
||||
shared_contracts::match3d_agent::Match3DGeneratedBackgroundAssetResponse {
|
||||
prompt: asset.prompt,
|
||||
level_scene_prompt: asset.level_scene_prompt,
|
||||
level_scene_image_src: asset.level_scene_image_src,
|
||||
level_scene_image_object_key: asset.level_scene_image_object_key,
|
||||
image_src: asset.image_src,
|
||||
image_object_key: asset.image_object_key,
|
||||
ui_spritesheet_prompt: asset.ui_spritesheet_prompt,
|
||||
ui_spritesheet_image_src: ui_spritesheet_image_src.clone(),
|
||||
ui_spritesheet_image_object_key: ui_spritesheet_image_object_key.clone(),
|
||||
item_spritesheet_prompt: asset.item_spritesheet_prompt,
|
||||
item_spritesheet_image_src: asset.item_spritesheet_image_src,
|
||||
item_spritesheet_image_object_key: asset.item_spritesheet_image_object_key,
|
||||
container_prompt: asset.container_prompt,
|
||||
container_image_src: asset.container_image_src,
|
||||
container_image_object_key: asset.container_image_object_key,
|
||||
container_image_src: ui_spritesheet_image_src.or(asset.container_image_src),
|
||||
container_image_object_key: ui_spritesheet_image_object_key
|
||||
.or(asset.container_image_object_key),
|
||||
status: asset.status,
|
||||
error: asset.error,
|
||||
}
|
||||
@@ -299,8 +311,17 @@ pub(super) fn map_match3d_background_asset_for_work(
|
||||
) -> shared_contracts::match3d_works::Match3DGeneratedBackgroundAssetResponse {
|
||||
shared_contracts::match3d_works::Match3DGeneratedBackgroundAssetResponse {
|
||||
prompt: asset.prompt,
|
||||
level_scene_prompt: asset.level_scene_prompt,
|
||||
level_scene_image_src: asset.level_scene_image_src,
|
||||
level_scene_image_object_key: asset.level_scene_image_object_key,
|
||||
image_src: asset.image_src,
|
||||
image_object_key: asset.image_object_key,
|
||||
ui_spritesheet_prompt: asset.ui_spritesheet_prompt,
|
||||
ui_spritesheet_image_src: asset.ui_spritesheet_image_src,
|
||||
ui_spritesheet_image_object_key: asset.ui_spritesheet_image_object_key,
|
||||
item_spritesheet_prompt: asset.item_spritesheet_prompt,
|
||||
item_spritesheet_image_src: asset.item_spritesheet_image_src,
|
||||
item_spritesheet_image_object_key: asset.item_spritesheet_image_object_key,
|
||||
container_prompt: asset.container_prompt,
|
||||
container_image_src: asset.container_image_src,
|
||||
container_image_object_key: asset.container_image_object_key,
|
||||
@@ -327,6 +348,14 @@ pub(super) fn resolve_match3d_default_cover_image_src(
|
||||
.map(str::trim)
|
||||
.filter(|value| !value.is_empty())
|
||||
.map(str::to_string)
|
||||
.or_else(|| {
|
||||
asset
|
||||
.ui_spritesheet_image_src
|
||||
.as_deref()
|
||||
.map(str::trim)
|
||||
.filter(|value| !value.is_empty())
|
||||
.map(str::to_string)
|
||||
})
|
||||
.or_else(|| {
|
||||
asset
|
||||
.container_image_object_key
|
||||
@@ -335,6 +364,14 @@ pub(super) fn resolve_match3d_default_cover_image_src(
|
||||
.filter(|value| !value.is_empty())
|
||||
.map(str::to_string)
|
||||
})
|
||||
.or_else(|| {
|
||||
asset
|
||||
.ui_spritesheet_image_object_key
|
||||
.as_deref()
|
||||
.map(str::trim)
|
||||
.filter(|value| !value.is_empty())
|
||||
.map(str::to_string)
|
||||
})
|
||||
.or_else(|| {
|
||||
asset
|
||||
.image_src
|
||||
@@ -408,6 +445,10 @@ fn match3d_item_asset_has_image(asset: &Match3DGeneratedItemAssetJson) -> bool {
|
||||
fn match3d_background_asset_has_image(asset: &Match3DGeneratedBackgroundAsset) -> bool {
|
||||
match3d_text_present(asset.image_src.as_ref())
|
||||
|| match3d_text_present(asset.image_object_key.as_ref())
|
||||
|| match3d_text_present(asset.ui_spritesheet_image_src.as_ref())
|
||||
|| match3d_text_present(asset.ui_spritesheet_image_object_key.as_ref())
|
||||
|| match3d_text_present(asset.item_spritesheet_image_src.as_ref())
|
||||
|| match3d_text_present(asset.item_spritesheet_image_object_key.as_ref())
|
||||
|| match3d_text_present(asset.container_image_src.as_ref())
|
||||
|| match3d_text_present(asset.container_image_object_key.as_ref())
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user