Create a new session: reset state and start fresh
(
&mut self,
session_id: &mut String,
chat_state: &mut ChatState,
chat_view: &mut ChatView,
rt_handle: &tokio::runtime::Handle,
)
| 2840 | |
| 2841 | /// Create a new session: reset state and start fresh |
| 2842 | fn create_new_session( |
| 2843 | &mut self, |
| 2844 | session_id: &mut String, |
| 2845 | chat_state: &mut ChatState, |
| 2846 | chat_view: &mut ChatView, |
| 2847 | rt_handle: &tokio::runtime::Handle, |
| 2848 | ) -> Result<()> { |
| 2849 | let agent = self.agent.clone(); |
| 2850 | let agent_type = self.agent_type.clone(); |
| 2851 | let workspace = self.workspace.clone(); |
| 2852 | |
| 2853 | let new_session_id = tokio::task::block_in_place(|| { |
| 2854 | rt_handle.block_on(agent.create_new_session(&agent_type)) |
| 2855 | })?; |
| 2856 | |
| 2857 | let new_state = ChatState::new( |
| 2858 | new_session_id.clone(), |
| 2859 | "CLI Session".to_string(), |
| 2860 | agent_type, |
| 2861 | workspace, |
| 2862 | ); |
| 2863 | |
| 2864 | *session_id = new_session_id; |
| 2865 | *chat_state = new_state; |
| 2866 | self.workspace = chat_state.workspace.clone(); |
| 2867 | |
| 2868 | // Reload model name |
| 2869 | self.load_current_model_name(chat_state, rt_handle); |
| 2870 | |
| 2871 | // Reset view state |
| 2872 | chat_view.clear_screen(); |
| 2873 | chat_view.scroll_to_bottom(); |
| 2874 | chat_view.set_status(Some("New session created".to_string())); |
| 2875 | |
| 2876 | Ok(()) |
| 2877 | } |
| 2878 | |
| 2879 | /// Show skill list/configuration menu. |
| 2880 | fn show_skill_selector( |
no test coverage detected