Sends a request to the SendMessage API. Emits error telemetry on failure.
(
&mut self,
os: &mut Os,
conversation_state: api_client::model::ConversationState,
request_metadata_lock: Arc<Mutex<Option<RequestMetadata>>>,
message_meta_tag
| 1319 | impl ChatSession { |
| 1320 | /// Sends a request to the SendMessage API. Emits error telemetry on failure. |
| 1321 | async fn send_message( |
| 1322 | &mut self, |
| 1323 | os: &mut Os, |
| 1324 | conversation_state: api_client::model::ConversationState, |
| 1325 | request_metadata_lock: Arc<Mutex<Option<RequestMetadata>>>, |
| 1326 | message_meta_tags: Option<Vec<MessageMetaTag>>, |
| 1327 | ) -> Result<SendMessageStream, ChatError> { |
| 1328 | match SendMessageStream::send_message(&os.client, conversation_state, request_metadata_lock, message_meta_tags) |
| 1329 | .await |
| 1330 | { |
| 1331 | Ok(res) => Ok(res), |
| 1332 | Err(err) => { |
| 1333 | let (reason, reason_desc) = get_error_reason(&err); |
| 1334 | self.send_chat_telemetry( |
| 1335 | os, |
| 1336 | TelemetryResult::Failed, |
| 1337 | Some(reason), |
| 1338 | Some(reason_desc), |
| 1339 | err.status_code(), |
| 1340 | true, // We never retry failed requests, so this always ends the current turn. |
| 1341 | ) |
| 1342 | .await; |
| 1343 | Err(err.into()) |
| 1344 | }, |
| 1345 | } |
| 1346 | } |
| 1347 | |
| 1348 | async fn spawn(&mut self, os: &mut Os) -> Result<()> { |
| 1349 | let is_small_screen = self.terminal_width() < GREETING_BREAK_POINT; |
no test coverage detected