mirror of
https://github.com/pacnpal/Roo-Code.git
synced 2025-12-20 20:31:37 -05:00
Fixe resource template matching
This commit is contained in:
@@ -794,8 +794,6 @@ export const ChatRowContent = ({
|
|||||||
{useMcpServer.type === "access_mcp_resource" && (
|
{useMcpServer.type === "access_mcp_resource" && (
|
||||||
<McpResourceRow
|
<McpResourceRow
|
||||||
item={{
|
item={{
|
||||||
// Always use the actual URI from the request
|
|
||||||
uri: useMcpServer.uri || "",
|
|
||||||
// Use the matched resource/template details, with fallbacks
|
// Use the matched resource/template details, with fallbacks
|
||||||
...(findMatchingResourceOrTemplate(
|
...(findMatchingResourceOrTemplate(
|
||||||
useMcpServer.uri || "",
|
useMcpServer.uri || "",
|
||||||
@@ -806,6 +804,8 @@ export const ChatRowContent = ({
|
|||||||
mimeType: "",
|
mimeType: "",
|
||||||
description: "",
|
description: "",
|
||||||
}),
|
}),
|
||||||
|
// Always use the actual URI from the request
|
||||||
|
uri: useMcpServer.uri || "",
|
||||||
}}
|
}}
|
||||||
/>
|
/>
|
||||||
)}
|
)}
|
||||||
|
|||||||
@@ -5,8 +5,8 @@ type McpResourceRowProps = {
|
|||||||
}
|
}
|
||||||
|
|
||||||
const McpResourceRow = ({ item }: McpResourceRowProps) => {
|
const McpResourceRow = ({ item }: McpResourceRowProps) => {
|
||||||
const isTemplate = "uriTemplate" in item
|
const hasUri = "uri" in item
|
||||||
const uri = isTemplate ? item.uriTemplate : item.uri
|
const uri = hasUri ? item.uri : item.uriTemplate
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div
|
<div
|
||||||
|
|||||||
@@ -12,14 +12,12 @@ export function findMatchingTemplate(
|
|||||||
): McpResourceTemplate | undefined {
|
): McpResourceTemplate | undefined {
|
||||||
return templates.find((template) => {
|
return templates.find((template) => {
|
||||||
// Convert template to regex pattern
|
// Convert template to regex pattern
|
||||||
const pattern = template.uriTemplate
|
const pattern = String(template.uriTemplate)
|
||||||
// Replace {param} with ([^/]+) to match any non-slash characters
|
// First escape special regex characters
|
||||||
.replace(/\{([^}]+)\}/g, "([^/]+)")
|
|
||||||
// Escape special regex characters except the ones we just added
|
|
||||||
.replace(/[.*+?^${}()|[\]\\]/g, "\\$&")
|
.replace(/[.*+?^${}()|[\]\\]/g, "\\$&")
|
||||||
// Un-escape the capturing groups we added
|
// Then replace {param} with ([^/]+) to match any non-slash characters
|
||||||
.replace(/\\\(/g, "(")
|
// We need to use \{ and \} because we just escaped them
|
||||||
.replace(/\\\)/g, ")")
|
.replace(/\\\{([^}]+)\\\}/g, "([^/]+)")
|
||||||
|
|
||||||
const regex = new RegExp(`^${pattern}$`)
|
const regex = new RegExp(`^${pattern}$`)
|
||||||
return regex.test(uri)
|
return regex.test(uri)
|
||||||
|
|||||||
Reference in New Issue
Block a user