250 lines
7.7 KiB
Rust
250 lines
7.7 KiB
Rust
use serde::{Deserialize, Serialize};
|
|
|
|
#[derive(Clone, Debug, Serialize, Deserialize, PartialEq)]
|
|
#[serde(rename_all = "camelCase")]
|
|
pub struct CreatePuzzleAgentSessionRequest {
|
|
#[serde(default)]
|
|
pub seed_text: Option<String>,
|
|
#[serde(default)]
|
|
pub work_title: Option<String>,
|
|
#[serde(default)]
|
|
pub work_description: Option<String>,
|
|
#[serde(default)]
|
|
pub picture_description: Option<String>,
|
|
#[serde(default)]
|
|
pub reference_image_src: Option<String>,
|
|
#[serde(default)]
|
|
pub image_model: Option<String>,
|
|
}
|
|
|
|
#[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<bool>,
|
|
}
|
|
|
|
#[derive(Clone, Debug, Serialize, Deserialize, PartialEq)]
|
|
#[serde(rename_all = "camelCase")]
|
|
pub struct ExecutePuzzleAgentActionRequest {
|
|
pub action: String,
|
|
#[serde(default)]
|
|
pub prompt_text: Option<String>,
|
|
#[serde(default)]
|
|
pub reference_image_src: Option<String>,
|
|
#[serde(default)]
|
|
pub image_model: Option<String>,
|
|
#[serde(default)]
|
|
pub candidate_count: Option<u32>,
|
|
#[serde(default)]
|
|
pub candidate_id: Option<String>,
|
|
#[serde(default)]
|
|
pub level_id: Option<String>,
|
|
#[serde(default)]
|
|
pub work_title: Option<String>,
|
|
#[serde(default)]
|
|
pub work_description: Option<String>,
|
|
#[serde(default)]
|
|
pub picture_description: Option<String>,
|
|
#[serde(default)]
|
|
pub level_name: Option<String>,
|
|
#[serde(default)]
|
|
pub summary: Option<String>,
|
|
#[serde(default)]
|
|
pub theme_tags: Option<Vec<String>>,
|
|
#[serde(default)]
|
|
pub levels_json: Option<String>,
|
|
}
|
|
|
|
#[derive(Clone, Debug, Serialize, Deserialize, PartialEq)]
|
|
#[serde(rename_all = "camelCase")]
|
|
pub struct PuzzleFormDraftResponse {
|
|
#[serde(default)]
|
|
pub work_title: Option<String>,
|
|
#[serde(default)]
|
|
pub work_description: Option<String>,
|
|
#[serde(default)]
|
|
pub picture_description: Option<String>,
|
|
}
|
|
|
|
#[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<String>,
|
|
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<String>,
|
|
pub composition_hooks: Vec<String>,
|
|
pub theme_tags: Vec<String>,
|
|
pub forbidden_directives: Vec<String>,
|
|
}
|
|
|
|
#[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<String>,
|
|
pub forbidden_directives: Vec<String>,
|
|
#[serde(default)]
|
|
pub creator_intent: Option<PuzzleCreatorIntentResponse>,
|
|
pub anchor_pack: PuzzleAnchorPackResponse,
|
|
pub candidates: Vec<PuzzleGeneratedImageCandidateResponse>,
|
|
#[serde(default)]
|
|
pub selected_candidate_id: Option<String>,
|
|
#[serde(default)]
|
|
pub cover_image_src: Option<String>,
|
|
#[serde(default)]
|
|
pub cover_asset_id: Option<String>,
|
|
pub generation_status: String,
|
|
pub levels: Vec<PuzzleDraftLevelResponse>,
|
|
#[serde(default)]
|
|
pub form_draft: Option<PuzzleFormDraftResponse>,
|
|
}
|
|
|
|
#[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<PuzzleGeneratedImageCandidateResponse>,
|
|
#[serde(default)]
|
|
pub selected_candidate_id: Option<String>,
|
|
#[serde(default)]
|
|
pub cover_image_src: Option<String>,
|
|
#[serde(default)]
|
|
pub cover_asset_id: Option<String>,
|
|
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<PuzzleResultPreviewBlockerResponse>,
|
|
pub quality_findings: Vec<PuzzleResultPreviewFindingResponse>,
|
|
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<PuzzleResultDraftResponse>,
|
|
pub messages: Vec<PuzzleAgentMessageResponse>,
|
|
#[serde(default)]
|
|
pub last_assistant_reply: Option<String>,
|
|
#[serde(default)]
|
|
pub published_profile_id: Option<String>,
|
|
pub suggested_actions: Vec<PuzzleAgentSuggestedActionResponse>,
|
|
#[serde(default)]
|
|
pub result_preview: Option<PuzzleResultPreviewEnvelopeResponse>,
|
|
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<String>,
|
|
}
|
|
|
|
#[derive(Clone, Debug, Serialize, Deserialize, PartialEq)]
|
|
#[serde(rename_all = "camelCase")]
|
|
pub struct PuzzleAgentActionResponse {
|
|
pub operation: PuzzleAgentOperationResponse,
|
|
/// 操作完成后的最新会话快照,供前端直接更新界面,避免重复拉取完整 session。
|
|
pub session: PuzzleAgentSessionSnapshotResponse,
|
|
}
|