feat: switch from mcp_core::Role to rmcp::model::Role (#3488)

This commit is contained in:
Alex Hancock
2025-07-18 12:30:23 -04:00
committed by GitHub
parent af872b1794
commit 76da3a9724
42 changed files with 105 additions and 69 deletions
+3 -3
View File
@@ -241,7 +241,7 @@ fn export_session_to_markdown(
for message in &messages {
// Check if this is a User message containing only ToolResponses
let is_only_tool_response = message.role == mcp_core::role::Role::User
let is_only_tool_response = message.role == rmcp::model::Role::User
&& message
.content
.iter()
@@ -263,8 +263,8 @@ fn export_session_to_markdown(
// Output the role prefix except for tool response-only messages
if !is_only_tool_response {
let role_prefix = match message.role {
mcp_core::role::Role::User => "### User:\n",
mcp_core::role::Role::Assistant => "### Assistant:\n",
rmcp::model::Role::User => "### User:\n",
rmcp::model::Role::Assistant => "### Assistant:\n",
};
markdown_output.push_str(role_prefix);
}
+1 -1
View File
@@ -2,7 +2,7 @@ use goose::message::{Message, MessageContent, ToolRequest, ToolResponse};
use goose::utils::safe_truncate;
use mcp_core::content::Content as McpContent;
use mcp_core::resource::ResourceContents;
use mcp_core::role::Role;
use rmcp::model::Role;
use serde_json::Value;
const MAX_STRING_LENGTH_MD_EXPORT: usize = 4096; // Generous limit for export
+5 -5
View File
@@ -1187,7 +1187,7 @@ impl Session {
let tool_requests = self
.messages
.last()
.filter(|msg| msg.role == mcp_core::role::Role::Assistant)
.filter(|msg| msg.role == rmcp::model::Role::Assistant)
.map_or(Vec::new(), |msg| {
msg.content
.iter()
@@ -1259,7 +1259,7 @@ impl Session {
} else {
// An interruption occurred outside of a tool request-response.
if let Some(last_msg) = self.messages.last() {
if last_msg.role == mcp_core::role::Role::User {
if last_msg.role == rmcp::model::Role::User {
match last_msg.content.first() {
Some(MessageContent::ToolResponse(_)) => {
// Interruption occurred after a tool had completed but not assistant reply
@@ -1464,9 +1464,9 @@ impl Session {
let msg = Message::from(prompt_message);
// ensure we get a User - Assistant - User type pattern
let expected_role = if i % 2 == 0 {
mcp_core::Role::User
rmcp::model::Role::User
} else {
mcp_core::Role::Assistant
rmcp::model::Role::Assistant
};
if msg.role != expected_role {
@@ -1480,7 +1480,7 @@ impl Session {
break;
}
if msg.role == mcp_core::Role::User {
if msg.role == rmcp::model::Role::User {
output::render_message(&msg, self.debug);
}
self.push_message(msg);
+1 -1
View File
@@ -232,7 +232,7 @@ fn render_tool_response(resp: &ToolResponse, theme: Theme, debug: bool) {
Ok(contents) => {
for content in contents {
if let Some(audience) = content.audience() {
if !audience.contains(&mcp_core::role::Role::User) {
if !audience.contains(&rmcp::model::Role::User) {
continue;
}
}