Coverage for stackone_ai / utils / normalize.py: 100%
6 statements
« prev ^ index » next coverage.py v7.13.1, created at 2026-04-02 08:51 +0000
« prev ^ index » next coverage.py v7.13.1, created at 2026-04-02 08:51 +0000
1"""Action name normalization utilities."""
3from __future__ import annotations
5import re
7_VERSIONED_ACTION_RE = re.compile(r"^[a-z][a-z0-9]*_\d+(?:\.\d+)+_(.+)_global$")
10def _normalize_action_name(action_name: str) -> str:
11 """Convert semantic search API action name to MCP tool name.
13 API: 'calendly_1.0.0_calendly_create_scheduling_link_global'
14 MCP: 'calendly_create_scheduling_link'
15 """
16 match = _VERSIONED_ACTION_RE.match(action_name)
17 return match.group(1) if match else action_name