From a871b5f8c4e716a884bc54f86f0574e0a75bd5ea Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=8E=8B=E5=BE=B7=E5=AE=87?= Date: Wed, 22 Jul 2026 11:10:48 +0800 Subject: [PATCH] refactor: editor agent extract common tool prompt --- .../platform-editor-agent/src/agent/tools/edit_image.rs | 3 ++- .../src/agent/tools/generate_background_music.rs | 5 +++-- .../src/agent/tools/generate_character.rs | 5 ++++- .../src/agent/tools/generate_icon_spritesheet.rs | 3 ++- .../platform-editor-agent/src/agent/tools/generate_image.rs | 3 ++- .../src/agent/tools/generate_sound_effect.rs | 3 ++- .../src/agent/tools/generate_ui_design.rs | 5 ++++- .../platform-editor-agent/src/agent/tools/generate_video.rs | 3 ++- .../crates/platform-editor-agent/src/agent/tools/mod.rs | 1 + 9 files changed, 22 insertions(+), 9 deletions(-) diff --git a/server-rs/crates/platform-editor-agent/src/agent/tools/edit_image.rs b/server-rs/crates/platform-editor-agent/src/agent/tools/edit_image.rs index d4fcc6df5..e1aebda49 100644 --- a/server-rs/crates/platform-editor-agent/src/agent/tools/edit_image.rs +++ b/server-rs/crates/platform-editor-agent/src/agent/tools/edit_image.rs @@ -6,6 +6,7 @@ use serde::{Deserialize, Serialize}; use serde_json::{Value, json}; use std::error::Error; use std::fmt::Display; +use crate::agent::tools::common::TOOL_CALL_PENDING_MESSAGE; pub struct EditImageTool { pub context: EditorToolContext, @@ -108,7 +109,7 @@ impl Tool for EditImageTool { return Err(error); } Ok(EditImageToolOutput { - message: "this tool call is pending user confirmation. if all is pending, just end this turn".to_string(), + message: TOOL_CALL_PENDING_MESSAGE.to_string(), }) } } diff --git a/server-rs/crates/platform-editor-agent/src/agent/tools/generate_background_music.rs b/server-rs/crates/platform-editor-agent/src/agent/tools/generate_background_music.rs index 8cdfb529a..8d659cf5f 100644 --- a/server-rs/crates/platform-editor-agent/src/agent/tools/generate_background_music.rs +++ b/server-rs/crates/platform-editor-agent/src/agent/tools/generate_background_music.rs @@ -1,10 +1,11 @@ use crate::framework::tool::{Tool, ToolFailure}; use platform_audio::SUNO_DEFAULT_MODEL; use serde::{Deserialize, Serialize}; -use serde_json::{Value, json}; +use serde_json::{json, Value}; use shared_contracts::assets::EditorAudioGenerateResponse; use std::error::Error; use std::fmt::Display; +use crate::agent::tools::common::TOOL_CALL_PENDING_MESSAGE; pub struct GenerateBackgroundMusicTool; @@ -64,7 +65,7 @@ impl Tool for GenerateBackgroundMusicTool { async move { self.validate_args(&args)?; Ok(GenerateBackgroundMusicToolOutput { - message: "this tool call is pending user confirmation. if all is pending, just end this turn".to_string(), + message: TOOL_CALL_PENDING_MESSAGE.to_string(), }) } } diff --git a/server-rs/crates/platform-editor-agent/src/agent/tools/generate_character.rs b/server-rs/crates/platform-editor-agent/src/agent/tools/generate_character.rs index 0f7ddd588..47aa4d640 100644 --- a/server-rs/crates/platform-editor-agent/src/agent/tools/generate_character.rs +++ b/server-rs/crates/platform-editor-agent/src/agent/tools/generate_character.rs @@ -12,6 +12,7 @@ use crate::framework::tool::ToolFailureKind; use crate::framework::tool::{Tool, ToolFailure}; use serde::{Deserialize, Serialize}; use serde_json::{Value, json}; +use crate::agent::tools::common::TOOL_CALL_PENDING_MESSAGE; pub struct GenerateCharacterTool { pub context: EditorToolContext, @@ -62,7 +63,9 @@ impl Tool for GenerateCharacterTool { ) -> impl Future> + Send { async move { self.validate_args(&args)?; - Ok(GenerateImageToolOutput { message: "this tool call is pending user confirmation. if all is pending, just end this turn".to_string() }) + Ok(GenerateImageToolOutput { + message: TOOL_CALL_PENDING_MESSAGE.to_string(), + }) } } diff --git a/server-rs/crates/platform-editor-agent/src/agent/tools/generate_icon_spritesheet.rs b/server-rs/crates/platform-editor-agent/src/agent/tools/generate_icon_spritesheet.rs index 56df93ebb..ea0cab0ad 100644 --- a/server-rs/crates/platform-editor-agent/src/agent/tools/generate_icon_spritesheet.rs +++ b/server-rs/crates/platform-editor-agent/src/agent/tools/generate_icon_spritesheet.rs @@ -11,6 +11,7 @@ use serde::{Deserialize, Serialize}; use serde_json::{Value, json}; use std::error::Error; use std::fmt::Display; +use crate::agent::tools::common::TOOL_CALL_PENDING_MESSAGE; pub struct GenerateIconSpritesheetTool { pub context: EditorToolContext, @@ -143,7 +144,7 @@ impl Tool for GenerateIconSpritesheetTool { async move { self.validate_args(&args)?; Ok(GenerateIconSpritesheetToolOutput { - message: "this tool call is pending user confirmation. if all is pending, just end this turn".to_string(), + message: TOOL_CALL_PENDING_MESSAGE.to_string(), }) } } diff --git a/server-rs/crates/platform-editor-agent/src/agent/tools/generate_image.rs b/server-rs/crates/platform-editor-agent/src/agent/tools/generate_image.rs index b8272c3e7..fd257612e 100644 --- a/server-rs/crates/platform-editor-agent/src/agent/tools/generate_image.rs +++ b/server-rs/crates/platform-editor-agent/src/agent/tools/generate_image.rs @@ -11,6 +11,7 @@ use serde::{Deserialize, Serialize}; use serde_json::{Value, json}; use std::error::Error; use std::fmt::Display; +use crate::agent::tools::common::TOOL_CALL_PENDING_MESSAGE; pub struct GenerateImageTool { pub context: EditorToolContext, @@ -123,7 +124,7 @@ impl Tool for GenerateImageTool { async move { self.validate_args(&args)?; Ok(GenerateImageToolOutput { - message: "this tool call is pending user confirmation.".to_string(), + message: TOOL_CALL_PENDING_MESSAGE.to_string(), }) } } diff --git a/server-rs/crates/platform-editor-agent/src/agent/tools/generate_sound_effect.rs b/server-rs/crates/platform-editor-agent/src/agent/tools/generate_sound_effect.rs index dba207011..479c71717 100644 --- a/server-rs/crates/platform-editor-agent/src/agent/tools/generate_sound_effect.rs +++ b/server-rs/crates/platform-editor-agent/src/agent/tools/generate_sound_effect.rs @@ -5,6 +5,7 @@ use serde_json::{Value, json}; use shared_contracts::assets::EditorAudioGenerateResponse; use std::error::Error; use std::fmt::Display; +use crate::agent::tools::common::TOOL_CALL_PENDING_MESSAGE; pub struct GenerateSoundEffectTool; @@ -90,7 +91,7 @@ impl Tool for GenerateSoundEffectTool { async move { self.validate_args(&args)?; Ok(GenerateSoundEffectToolOutput { - message: "this tool call is pending user confirmation. if all is pending, just end this turn".to_string(), + message:TOOL_CALL_PENDING_MESSAGE.to_string(), }) } } diff --git a/server-rs/crates/platform-editor-agent/src/agent/tools/generate_ui_design.rs b/server-rs/crates/platform-editor-agent/src/agent/tools/generate_ui_design.rs index 9be752206..152d9a99a 100644 --- a/server-rs/crates/platform-editor-agent/src/agent/tools/generate_ui_design.rs +++ b/server-rs/crates/platform-editor-agent/src/agent/tools/generate_ui_design.rs @@ -1,4 +1,5 @@ use crate::agent::asset::ImageId; +use crate::agent::tools::common::TOOL_CALL_PENDING_MESSAGE; use crate::agent::tools::context::EditorToolContext; use crate::agent::tools::generate_image::{ EditorImageGenerationResult, GenerateImageError, GenerateImageToolOutput, @@ -70,7 +71,9 @@ impl Tool for GenerateUiDesignTool { ) -> impl Future> + Send { async move { self.validate_args(&args)?; - Ok(GenerateImageToolOutput { message: "this tool call is pending user confirmation. if all is pending, just end this turn".to_string() }) + Ok(GenerateImageToolOutput { + message: TOOL_CALL_PENDING_MESSAGE.to_string(), + }) } } diff --git a/server-rs/crates/platform-editor-agent/src/agent/tools/generate_video.rs b/server-rs/crates/platform-editor-agent/src/agent/tools/generate_video.rs index d802aec42..21935959e 100644 --- a/server-rs/crates/platform-editor-agent/src/agent/tools/generate_video.rs +++ b/server-rs/crates/platform-editor-agent/src/agent/tools/generate_video.rs @@ -1,4 +1,5 @@ use crate::agent::asset::ImageId; +use crate::agent::tools::common::TOOL_CALL_PENDING_MESSAGE; use crate::agent::tools::context::EditorToolContext; use crate::framework::tool::{Tool, ToolFailure, ToolFailureKind}; use serde::{Deserialize, Serialize}; @@ -151,7 +152,7 @@ impl Tool for GenerateVideoTool { async move { self.validate_args(&args)?; Ok(GenerateVideoToolOutput { - message: "this tool call is pending user confirmation. if all is pending, just end this turn".to_string(), + message: TOOL_CALL_PENDING_MESSAGE.to_string(), }) } } diff --git a/server-rs/crates/platform-editor-agent/src/agent/tools/mod.rs b/server-rs/crates/platform-editor-agent/src/agent/tools/mod.rs index 57f355e51..a8ef88678 100644 --- a/server-rs/crates/platform-editor-agent/src/agent/tools/mod.rs +++ b/server-rs/crates/platform-editor-agent/src/agent/tools/mod.rs @@ -8,6 +8,7 @@ pub mod generate_sound_effect; pub mod generate_ui_design; pub mod generate_video; pub mod image_generation_options; +mod common; #[cfg(test)] mod tests {