(
request: &Bound<'_, PyDict>,
)
| 6425 | } |
| 6426 | |
| 6427 | fn py_session_request_to_parts( |
| 6428 | request: &Bound<'_, PyDict>, |
| 6429 | ) -> PyResult<( |
| 6430 | String, |
| 6431 | Option<Vec<RustMessage>>, |
| 6432 | Vec<a3s_code_core::llm::Attachment>, |
| 6433 | )> { |
| 6434 | let prompt = request |
| 6435 | .get_item("prompt")? |
| 6436 | .ok_or_else(|| PyValueError::new_err("request missing 'prompt' field"))? |
| 6437 | .extract::<String>()?; |
| 6438 | |
| 6439 | let history = match request.get_item("history")? { |
| 6440 | Some(value) => { |
| 6441 | let list = value |
| 6442 | .downcast::<PyList>() |
| 6443 | .map_err(|_| PyTypeError::new_err("request.history must be a list"))?; |
| 6444 | Some(py_list_to_messages(list)?) |
| 6445 | } |
| 6446 | None => None, |
| 6447 | }; |
| 6448 | |
| 6449 | let attachments = match request.get_item("attachments")? { |
| 6450 | Some(value) => { |
| 6451 | let list = value |
| 6452 | .downcast::<PyList>() |
| 6453 | .map_err(|_| PyTypeError::new_err("request.attachments must be a list"))?; |
| 6454 | py_attachment_list_to_rust(list)? |
| 6455 | } |
| 6456 | None => Vec::new(), |
| 6457 | }; |
| 6458 | |
| 6459 | Ok((prompt, history, attachments)) |
| 6460 | } |
| 6461 | |
| 6462 | fn py_session_input_to_parts( |
| 6463 | input: &Bound<'_, PyAny>, |
no test coverage detected