MCPcopy Index your code
hub / github.com/ChrisFeldmeier/OpenCodeRust / message_to_info

Function message_to_info

crates/opencode-server/src/routes.rs:864–931  ·  view source on GitHub ↗
(session_id: &str, message: &opencode_session::SessionMessage)

Source from the content-addressed store, hash-verified

862}
863
864fn message_to_info(session_id: &str, message: &opencode_session::SessionMessage) -> MessageInfo {
865 let usage = message.usage.clone().unwrap_or_default();
866 let model_id = message
867 .metadata
868 .get("model_id")
869 .and_then(|v| v.as_str())
870 .map(|s| s.to_string());
871 let model_provider = message
872 .metadata
873 .get("model_provider")
874 .and_then(|v| v.as_str())
875 .map(|s| s.to_string());
876 let model = match (model_provider.as_deref(), model_id.as_deref()) {
877 (Some(provider), Some(model)) => Some(format!("{}/{}", provider, model)),
878 (None, Some(model)) => Some(model.to_string()),
879 _ => None,
880 };
881 let cost = if usage.total_cost > 0.0 {
882 usage.total_cost
883 } else {
884 message
885 .metadata
886 .get("cost")
887 .and_then(|v| v.as_f64())
888 .unwrap_or(0.0)
889 };
890
891 MessageInfo {
892 id: message.id.clone(),
893 session_id: session_id.to_string(),
894 role: message_role_name(&message.role).to_string(),
895 parts: message.parts.iter().map(part_to_info).collect(),
896 created_at: message.created_at.timestamp_millis(),
897 completed_at: message
898 .metadata
899 .get("completed_at")
900 .and_then(|v| v.as_i64()),
901 agent: message
902 .metadata
903 .get("agent")
904 .and_then(|v| v.as_str())
905 .map(|s| s.to_string()),
906 model,
907 mode: message
908 .metadata
909 .get("mode")
910 .and_then(|v| v.as_str())
911 .map(|s| s.to_string()),
912 finish: message
913 .metadata
914 .get("finish_reason")
915 .and_then(|v| v.as_str())
916 .map(|s| s.to_string()),
917 error: message
918 .metadata
919 .get("error")
920 .and_then(|v| v.as_str())
921 .map(|s| s.to_string()),

Callers 2

send_messageFunction · 0.85
list_messagesFunction · 0.85

Calls 4

message_role_nameFunction · 0.85
cloneMethod · 0.45
getMethod · 0.45
as_strMethod · 0.45

Tested by

no test coverage detected