(
agent: &Agent,
session_id: &str,
options: SessionOptions,
)
| 150 | } |
| 151 | |
| 152 | pub(super) fn resume_session( |
| 153 | agent: &Agent, |
| 154 | session_id: &str, |
| 155 | options: SessionOptions, |
| 156 | ) -> Result<AgentSession> { |
| 157 | bail_if_agent_closed(agent)?; |
| 158 | |
| 159 | let store = options.session_store.clone().ok_or_else(|| { |
| 160 | crate::error::CodeError::Session( |
| 161 | "resume_session requires a session_store in SessionOptions".to_string(), |
| 162 | ) |
| 163 | })?; |
| 164 | |
| 165 | let data = session_persistence::load_session_data(&store, session_id)?; |
| 166 | let opts = session_persistence::apply_persisted_runtime_options(options, &data); |
| 167 | let opts = session_builder::prepare_session_options(agent, opts); |
| 168 | let session_id = data.id.clone(); |
| 169 | let workspace = data.config.workspace.clone(); |
| 170 | let llm_client = |
| 171 | session_config::resolve_session_llm_client(&agent.code_config, &opts, Some(&session_id))?; |
| 172 | let session = session_builder::build_agent_session(agent, workspace, llm_client, &opts)?; |
| 173 | session_persistence::restore_persisted_session_state(&session, &store, data)?; |
| 174 | |
| 175 | Ok(session) |
| 176 | } |
no test coverage detected