import re def parse_response(text: str): first_line = next((line.strip() for line in text.strip().splitlines() if line.strip()), "") final_match = re.match(r"FINAL:\s*(.+)", first_line, re.IGNORECASE) if final_match: return "final", final_match.group(1).strip() action_match = re.match(r"ACTION:\s*(\w+)\(([^)]*)\)", first_line, re.IGNORECASE) if action_match: tool_name = action_match.group(1).strip() raw_args = [a.strip() for a in action_match.group(2).split(",") if a.strip()] args = [] for a in raw_args: if "=" in a: a = a.split("=", 1)[1].strip() a = a.strip("\"'") try: args.append(float(a)) except ValueError: args.append(a) return "action", (tool_name, args) return "unknown", first_line