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

1"""Action name normalization utilities.""" 

2 

3from __future__ import annotations 

4 

5import re 

6 

7_VERSIONED_ACTION_RE = re.compile(r"^[a-z][a-z0-9]*_\d+(?:\.\d+)+_(.+)_global$") 

8 

9 

10def _normalize_action_name(action_name: str) -> str: 

11 """Convert semantic search API action name to MCP tool name. 

12 

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