use serde::{Deserialize, Serialize}; #[derive(Clone, Debug, Serialize, Deserialize, PartialEq)] #[serde(rename_all = "camelCase")] pub struct CreatePuzzleAgentSessionRequest { #[serde(default)] pub seed_text: Option, #[serde(default)] pub work_title: Option, #[serde(default)] pub work_description: Option, #[serde(default)] pub picture_description: Option, #[serde(default)] pub reference_image_src: Option, #[serde(default)] pub image_model: Option, } #[derive(Clone, Debug, Serialize, Deserialize, PartialEq)] #[serde(rename_all = "camelCase")] pub struct SendPuzzleAgentMessageRequest { pub client_message_id: String, pub text: String, #[serde(default)] pub quick_fill_requested: Option, } #[derive(Clone, Debug, Serialize, Deserialize, PartialEq)] #[serde(rename_all = "camelCase")] pub struct ExecutePuzzleAgentActionRequest { pub action: String, #[serde(default)] pub prompt_text: Option, #[serde(default)] pub reference_image_src: Option, #[serde(default)] pub image_model: Option, #[serde(default)] pub candidate_count: Option, #[serde(default)] pub candidate_id: Option, #[serde(default)] pub level_id: Option, #[serde(default)] pub work_title: Option, #[serde(default)] pub work_description: Option, #[serde(default)] pub picture_description: Option, #[serde(default)] pub level_name: Option, #[serde(default)] pub summary: Option, #[serde(default)] pub theme_tags: Option>, #[serde(default)] pub levels_json: Option, } #[derive(Clone, Debug, Serialize, Deserialize, PartialEq)] #[serde(rename_all = "camelCase")] pub struct PuzzleFormDraftResponse { #[serde(default)] pub work_title: Option, #[serde(default)] pub work_description: Option, #[serde(default)] pub picture_description: Option, } #[derive(Clone, Debug, Serialize, Deserialize, PartialEq, Eq)] #[serde(rename_all = "camelCase")] pub struct PuzzleAnchorItemResponse { pub key: String, pub label: String, pub value: String, pub status: String, } #[derive(Clone, Debug, Serialize, Deserialize, PartialEq, Eq)] #[serde(rename_all = "camelCase")] pub struct PuzzleAnchorPackResponse { pub theme_promise: PuzzleAnchorItemResponse, pub visual_subject: PuzzleAnchorItemResponse, pub visual_mood: PuzzleAnchorItemResponse, pub composition_hooks: PuzzleAnchorItemResponse, pub tags_and_forbidden: PuzzleAnchorItemResponse, } #[derive(Clone, Debug, Serialize, Deserialize, PartialEq, Eq)] #[serde(rename_all = "camelCase")] pub struct PuzzleGeneratedImageCandidateResponse { pub candidate_id: String, pub image_src: String, pub asset_id: String, pub prompt: String, #[serde(default)] pub actual_prompt: Option, pub source_type: String, pub selected: bool, } #[derive(Clone, Debug, Serialize, Deserialize, PartialEq)] #[serde(rename_all = "camelCase")] pub struct PuzzleCreatorIntentResponse { pub source_mode: String, pub raw_messages_summary: String, pub theme_promise: String, pub visual_subject: String, pub visual_mood: Vec, pub composition_hooks: Vec, pub theme_tags: Vec, pub forbidden_directives: Vec, } #[derive(Clone, Debug, Serialize, Deserialize, PartialEq)] #[serde(rename_all = "camelCase")] pub struct PuzzleResultDraftResponse { pub work_title: String, pub work_description: String, pub level_name: String, pub summary: String, pub theme_tags: Vec, pub forbidden_directives: Vec, #[serde(default)] pub creator_intent: Option, pub anchor_pack: PuzzleAnchorPackResponse, pub candidates: Vec, #[serde(default)] pub selected_candidate_id: Option, #[serde(default)] pub cover_image_src: Option, #[serde(default)] pub cover_asset_id: Option, pub generation_status: String, pub levels: Vec, #[serde(default)] pub form_draft: Option, } #[derive(Clone, Debug, Serialize, Deserialize, PartialEq)] #[serde(rename_all = "camelCase")] pub struct PuzzleDraftLevelResponse { pub level_id: String, pub level_name: String, pub picture_description: String, pub candidates: Vec, #[serde(default)] pub selected_candidate_id: Option, #[serde(default)] pub cover_image_src: Option, #[serde(default)] pub cover_asset_id: Option, pub generation_status: String, } #[derive(Clone, Debug, Serialize, Deserialize, PartialEq, Eq)] #[serde(rename_all = "camelCase")] pub struct PuzzleAgentMessageResponse { pub id: String, pub role: String, pub kind: String, pub text: String, pub created_at: String, } #[derive(Clone, Debug, Serialize, Deserialize, PartialEq, Eq)] #[serde(rename_all = "camelCase")] pub struct PuzzleAgentSuggestedActionResponse { pub id: String, pub action_type: String, pub label: String, } #[derive(Clone, Debug, Serialize, Deserialize, PartialEq, Eq)] #[serde(rename_all = "camelCase")] pub struct PuzzleResultPreviewBlockerResponse { pub id: String, pub code: String, pub message: String, } #[derive(Clone, Debug, Serialize, Deserialize, PartialEq, Eq)] #[serde(rename_all = "camelCase")] pub struct PuzzleResultPreviewFindingResponse { pub id: String, pub severity: String, pub code: String, pub message: String, } #[derive(Clone, Debug, Serialize, Deserialize, PartialEq)] #[serde(rename_all = "camelCase")] pub struct PuzzleResultPreviewEnvelopeResponse { pub draft: PuzzleResultDraftResponse, pub blockers: Vec, pub quality_findings: Vec, pub publish_ready: bool, } #[derive(Clone, Debug, Serialize, Deserialize, PartialEq)] #[serde(rename_all = "camelCase")] pub struct PuzzleAgentSessionSnapshotResponse { pub session_id: String, pub seed_text: String, pub current_turn: u32, pub progress_percent: u32, pub stage: String, pub anchor_pack: PuzzleAnchorPackResponse, #[serde(default)] pub draft: Option, pub messages: Vec, #[serde(default)] pub last_assistant_reply: Option, #[serde(default)] pub published_profile_id: Option, pub suggested_actions: Vec, #[serde(default)] pub result_preview: Option, pub updated_at: String, } #[derive(Clone, Debug, Serialize, Deserialize, PartialEq)] #[serde(rename_all = "camelCase")] pub struct PuzzleAgentSessionResponse { pub session: PuzzleAgentSessionSnapshotResponse, } #[derive(Clone, Debug, Serialize, Deserialize, PartialEq)] #[serde(rename_all = "camelCase")] pub struct PuzzleAgentOperationResponse { pub operation_id: String, pub operation_type: String, pub status: String, pub phase_label: String, pub phase_detail: String, pub progress: u32, #[serde(default)] pub error: Option, } #[derive(Clone, Debug, Serialize, Deserialize, PartialEq)] #[serde(rename_all = "camelCase")] pub struct PuzzleAgentActionResponse { pub operation: PuzzleAgentOperationResponse, /// 操作完成后的最新会话快照,供前端直接更新界面,避免重复拉取完整 session。 pub session: PuzzleAgentSessionSnapshotResponse, }