//! runtime story 领域模型。 //! //! 当前 crate 用于运行时剧情主链的纯规则收口。后续迁移时仍只能保留 JSON 规则、 //! 选项生成和视图模型转换,不引入 Axum、LLM 或 SpacetimeDB。 use serde_json::Value; use shared_contracts::runtime_story::{ RuntimeBattlePresentation, RuntimeStoryOptionView, RuntimeStoryPatch, }; pub const CONTINUE_ADVENTURE_FUNCTION_ID: &str = "story_continue_adventure"; pub const MAX_TASK5_COMPANIONS: usize = 2; pub struct StoryResolution { pub action_text: String, pub result_text: String, pub story_text: Option, pub presentation_options: Option>, pub saved_current_story: Option, pub patches: Vec, pub battle: Option, pub toast: Option, } pub struct GeneratedStoryPayload { pub story_text: String, pub history_result_text: String, pub presentation_options: Vec, pub saved_current_story: Value, } pub struct CurrentEncounterNpcQuestContext { pub npc_id: String, pub npc_name: String, } pub struct PendingQuestOfferContext { pub dialogue: Vec, pub turn_count: i32, pub custom_input_placeholder: String, pub quest: Value, pub quest_id: String, pub intro_text: Option, }