refac
This commit is contained in:
@@ -2074,7 +2074,7 @@ def sanitize_tool_pairs(messages: list[dict]) -> list[dict]:
|
||||
return sanitized
|
||||
|
||||
|
||||
SKILL_MENTION_RE = re.compile(r'<\$([^|>]+)(?:\|[^>]*)?>')
|
||||
SKILL_MENTION_RE = re.compile(r'<(?:\$([^|>]+)(?:\|[^>]*)?|/([^|>]+)\|[^>]*)>')
|
||||
|
||||
|
||||
def _get_text_parts(message: dict) -> list[str]:
|
||||
@@ -2088,27 +2088,31 @@ def _get_text_parts(message: dict) -> list[str]:
|
||||
|
||||
|
||||
def extract_skill_ids_from_messages(messages: list[dict]) -> set[str]:
|
||||
"""Extract skill IDs from <$skillId|label> mention tags in messages."""
|
||||
"""Extract skill IDs from <$skillId|label> and </skillId|label> mention tags."""
|
||||
ids: set[str] = set()
|
||||
for message in messages:
|
||||
for text in _get_text_parts(message):
|
||||
ids.update(m.group(1) for m in SKILL_MENTION_RE.finditer(text))
|
||||
ids.update(m.group(1) or m.group(2) for m in SKILL_MENTION_RE.finditer(text))
|
||||
return ids
|
||||
|
||||
|
||||
def strip_skill_mentions(messages: list[dict]) -> None:
|
||||
"""Replace <$skillId|label> mention tags with the label in message content in-place."""
|
||||
strip_re = re.compile(r'<\$[^|>]+(?:\|([^>]*))?>')
|
||||
"""Replace <$skillId|label> and </skillId|label> mention tags with the label in-place."""
|
||||
strip_re = re.compile(r'<(?:\$[^|>]+(?:\|([^>]*))?|/[^|>]+\|([^>]*))>')
|
||||
|
||||
def label(match):
|
||||
return match.group(1) or match.group(2) or ''
|
||||
|
||||
for message in messages:
|
||||
content = message.get('content')
|
||||
if isinstance(content, str) and strip_re.search(content):
|
||||
message['content'] = strip_re.sub(r'\1', content).strip()
|
||||
message['content'] = strip_re.sub(label, content).strip()
|
||||
elif isinstance(content, list):
|
||||
for part in content:
|
||||
if isinstance(part, dict) and part.get('type') == 'text':
|
||||
text = part.get('text', '')
|
||||
if strip_re.search(text):
|
||||
part['text'] = strip_re.sub(r'\1', text).strip()
|
||||
part['text'] = strip_re.sub(label, text).strip()
|
||||
|
||||
|
||||
async def connect_mcp_server(
|
||||
|
||||
Reference in New Issue
Block a user