\2', html_content, flags=re.DOTALL)
+ html_content = re.sub(r'`([^`]+)`', r'\1', html_content)
+
+ # Convert bold and italic
+ html_content = re.sub(r'\*\*(.*?)\*\*', r'\1', html_content)
+ html_content = re.sub(r'\*(.*?)\*', r'\1', html_content)
+
+ # Convert lists
+ html_content = re.sub(r'^- (.*?)$', r'No action fields available
' + + fields_html = [] + for field in action_fields: + field_html = _generate_single_field(field) + fields_html.append(field_html) + + return '\n'.join(fields_html) + + +def _generate_single_field(field: Dict[str, Any]) -> str: + """Generate HTML for a single form field with enhanced metadata.""" + field_name = field['name'] + field_type = field['type'] + required = field['required'] + placeholder = field.get('placeholder', '') + help_text = field.get('help_text', '') + choices = field.get('choices', []) + min_value = field.get('min_value') + max_value = field.get('max_value') + default_value = field.get('default_value') + + # Build label with required indicator + label_text = field_name.replace('_', ' ').title() + if required: + label_text += ' *' + + # Build input attributes + input_attrs = [] + if required: + input_attrs.append('required') + if placeholder: + input_attrs.append(f'placeholder="{placeholder}"') + if min_value is not None: + input_attrs.append(f'min="{min_value}"') + if max_value is not None: + input_attrs.append(f'max="{max_value}"') + if default_value is not None: + input_attrs.append(f'value="{default_value}"') + + attrs_str = ' '.join(input_attrs) + + if field_type == 'checkbox': + return f''' +