storage generated assets metadata in external job payload (only for editor agent source)
This commit is contained in:
@@ -19,7 +19,9 @@ use platform_editor_agent::agent::tools::generate_sound_effect::{
|
||||
GenerateSoundEffectTool, GenerateSoundEffectToolArgs,
|
||||
};
|
||||
use platform_editor_agent::agent::tools::generate_ui_design::GenerateUiDesignTool;
|
||||
use platform_editor_agent::agent::tools::generate_video::{GenerateVideoTool, GenerateVideoToolArgs};
|
||||
use platform_editor_agent::agent::tools::generate_video::{
|
||||
GenerateVideoTool, GenerateVideoToolArgs,
|
||||
};
|
||||
use platform_editor_agent::framework::tool::Tool;
|
||||
use serde_json::Value;
|
||||
use shared_contracts::assets::{EditorAudioGenerateResponse, EditorVideoGenerateResponse};
|
||||
@@ -108,9 +110,9 @@ fn reconcile_completed_editor_agent_tool_call(
|
||||
let response = result_payload_json
|
||||
.ok_or_else(|| "生成任务缺少结果数据".to_string())
|
||||
.and_then(|payload| serde_json::from_str::<Value>(payload).map_err(|e| e.to_string()))?
|
||||
.get("response")
|
||||
.get("editor-agent-tool-call-result")
|
||||
.cloned()
|
||||
.ok_or_else(|| "生成任务缺少 response 结果".to_string())?;
|
||||
.ok_or_else(|| "生成任务缺少 Agent 工具调用结果".to_string())?;
|
||||
let tool_call = message
|
||||
.tool_call
|
||||
.as_mut()
|
||||
@@ -153,7 +155,7 @@ fn reconcile_completed_editor_agent_tool_call(
|
||||
context: EditorToolContext::default(),
|
||||
}
|
||||
.format_execute_message(&args, &result);
|
||||
tool_call.images = vec![resp_to_asset::editor_agent_generated_spritesheet(&result)];
|
||||
tool_call.images = resp_to_asset::editor_agent_generated_spritesheet_images(&result);
|
||||
}
|
||||
GenerateVideoTool::NAME => {
|
||||
let args: GenerateVideoToolArgs = parse_reconciled_value(&tool_call.args)?;
|
||||
|
||||
@@ -1,9 +1,11 @@
|
||||
use serde_json::Value;
|
||||
use shared_contracts::assets::{EditorAudioGenerateResponse, EditorVideoGenerateResponse};
|
||||
use shared_contracts::editor_agent::{EditorAgentGeneratedAudio, EditorAgentGeneratedImage, EditorAgentGeneratedVideo};
|
||||
use platform_editor_agent::agent::tools::edit_image::EditorImageEditResult;
|
||||
use platform_editor_agent::agent::tools::generate_icon_spritesheet::EditorIconSpritesheetResult;
|
||||
use platform_editor_agent::agent::tools::generate_image::EditorImageGenerationResult;
|
||||
use serde_json::Value;
|
||||
use shared_contracts::assets::{EditorAudioGenerateResponse, EditorVideoGenerateResponse};
|
||||
use shared_contracts::editor_agent::{
|
||||
EditorAgentGeneratedAudio, EditorAgentGeneratedImage, EditorAgentGeneratedVideo,
|
||||
};
|
||||
|
||||
fn value_string(value: Option<&Value>, field: &str) -> Option<String> {
|
||||
value
|
||||
@@ -12,7 +14,9 @@ fn value_string(value: Option<&Value>, field: &str) -> Option<String> {
|
||||
.map(ToOwned::to_owned)
|
||||
}
|
||||
|
||||
pub fn editor_agent_generated_image(result: &EditorImageGenerationResult) -> EditorAgentGeneratedImage {
|
||||
pub fn editor_agent_generated_image(
|
||||
result: &EditorImageGenerationResult,
|
||||
) -> EditorAgentGeneratedImage {
|
||||
EditorAgentGeneratedImage {
|
||||
resource_id: value_string(result.resource.as_ref(), "resourceId"),
|
||||
object_key: result.object_key.clone(),
|
||||
@@ -52,7 +56,32 @@ pub fn editor_agent_generated_spritesheet(
|
||||
}
|
||||
}
|
||||
|
||||
pub fn editor_agent_generated_video(result: &EditorVideoGenerateResponse) -> EditorAgentGeneratedVideo {
|
||||
pub fn editor_agent_generated_spritesheet_images(
|
||||
result: &EditorIconSpritesheetResult,
|
||||
) -> Vec<EditorAgentGeneratedImage> {
|
||||
let images = result
|
||||
.icon_image_srcs
|
||||
.iter()
|
||||
.map(|image| EditorAgentGeneratedImage {
|
||||
resource_id: value_string(image.resource.as_ref(), "resourceId"),
|
||||
object_key: value_string(image.resource.as_ref(), "objectKey"),
|
||||
asset_object_id: value_string(image.resource.as_ref(), "assetObjectId"),
|
||||
image_src: image.image_src.clone(),
|
||||
thumbnail_src: None,
|
||||
width: Some(image.width),
|
||||
height: Some(image.height),
|
||||
})
|
||||
.collect::<Vec<_>>();
|
||||
if images.is_empty() {
|
||||
vec![editor_agent_generated_spritesheet(result)]
|
||||
} else {
|
||||
images
|
||||
}
|
||||
}
|
||||
|
||||
pub fn editor_agent_generated_video(
|
||||
result: &EditorVideoGenerateResponse,
|
||||
) -> EditorAgentGeneratedVideo {
|
||||
EditorAgentGeneratedVideo {
|
||||
resource_id: value_string(result.resource.as_ref(), "resourceId"),
|
||||
object_key: result.object_key.clone(),
|
||||
@@ -64,7 +93,9 @@ pub fn editor_agent_generated_video(result: &EditorVideoGenerateResponse) -> Edi
|
||||
}
|
||||
}
|
||||
|
||||
pub fn editor_agent_generated_audio(result: &EditorAudioGenerateResponse) -> EditorAgentGeneratedAudio {
|
||||
pub fn editor_agent_generated_audio(
|
||||
result: &EditorAudioGenerateResponse,
|
||||
) -> EditorAgentGeneratedAudio {
|
||||
EditorAgentGeneratedAudio {
|
||||
resource_id: value_string(result.resource.as_ref(), "resourceId"),
|
||||
object_key: result.object_key.clone(),
|
||||
|
||||
Reference in New Issue
Block a user