feat: mcp router extension discovery and install tool (#1995)
Co-authored-by: Alice Hau <ahau@squareup.com>
This commit is contained in:
@@ -59,6 +59,13 @@ pub struct ToolConfirmationRequest {
|
||||
pub prompt: Option<String>,
|
||||
}
|
||||
|
||||
#[derive(Debug, Clone, PartialEq, serde::Serialize, serde::Deserialize)]
|
||||
#[serde(rename_all = "camelCase")]
|
||||
pub struct EnableExtensionRequest {
|
||||
pub id: String,
|
||||
pub extension_name: String,
|
||||
}
|
||||
|
||||
#[derive(Debug, Clone, PartialEq, serde::Serialize, serde::Deserialize)]
|
||||
pub struct ThinkingContent {
|
||||
pub thinking: String,
|
||||
@@ -87,6 +94,7 @@ pub enum MessageContent {
|
||||
ToolRequest(ToolRequest),
|
||||
ToolResponse(ToolResponse),
|
||||
ToolConfirmationRequest(ToolConfirmationRequest),
|
||||
EnableExtensionRequest(EnableExtensionRequest),
|
||||
FrontendToolRequest(FrontendToolRequest),
|
||||
Thinking(ThinkingContent),
|
||||
RedactedThinking(RedactedThinkingContent),
|
||||
@@ -136,6 +144,13 @@ impl MessageContent {
|
||||
})
|
||||
}
|
||||
|
||||
pub fn enable_extension_request<S: Into<String>>(id: S, extension_name: String) -> Self {
|
||||
MessageContent::EnableExtensionRequest(EnableExtensionRequest {
|
||||
id: id.into(),
|
||||
extension_name,
|
||||
})
|
||||
}
|
||||
|
||||
pub fn thinking<S1: Into<String>, S2: Into<String>>(thinking: S1, signature: S2) -> Self {
|
||||
MessageContent::Thinking(ThinkingContent {
|
||||
thinking: thinking.into(),
|
||||
@@ -177,6 +192,14 @@ impl MessageContent {
|
||||
}
|
||||
}
|
||||
|
||||
pub fn as_enable_extension_request(&self) -> Option<&EnableExtensionRequest> {
|
||||
if let MessageContent::EnableExtensionRequest(ref enable_extension_request) = self {
|
||||
Some(enable_extension_request)
|
||||
} else {
|
||||
None
|
||||
}
|
||||
}
|
||||
|
||||
pub fn as_tool_response_text(&self) -> Option<String> {
|
||||
if let Some(tool_response) = self.as_tool_response() {
|
||||
if let Ok(contents) = &tool_response.tool_result {
|
||||
@@ -336,6 +359,14 @@ impl Message {
|
||||
))
|
||||
}
|
||||
|
||||
pub fn with_enable_extension_request<S: Into<String>>(
|
||||
self,
|
||||
id: S,
|
||||
extension_name: String,
|
||||
) -> Self {
|
||||
self.with_content(MessageContent::enable_extension_request(id, extension_name))
|
||||
}
|
||||
|
||||
pub fn with_frontend_tool_request<S: Into<String>>(
|
||||
self,
|
||||
id: S,
|
||||
|
||||
Reference in New Issue
Block a user