def apply_search_replace_changes(original_content: str, changes_text: str) -> str: """Apply search/replace changes to content (HTML, Python, etc.)""" if not changes_text.strip(): return original_content blocks=[] current_block="" lines=changes_text.split('\n') for line in lines: if line.strip()==SEARCH_START: if current_block.strip(): blocks.append(current_block.strip()) current_block=line+"\n" elif line.strip()==REPLACE_END: current_block+=line+"\n" blocks.append(current_block.strip()) current_block="" else: current_block+=line+"\n" if current_block.strip(): blocks.append(current_block.strip()) modified_content=original_content for block in blocks: lines=block.split('\n') search_lines=[]; replace_lines=[] in_search=False; in_replace=False for ln in lines: if ln.strip()==SEARCH_START: in_search=True; in_replace=False elif ln.strip()==DIVIDER: in_search=False; in_replace=True elif ln.strip()==REPLACE_END: in_replace=False elif in_search: search_lines.append(ln) elif in_replace: replace_lines.append(ln) if search_lines: search_text='\n'.join(search_lines).strip() replace_text='\n'.join(replace_lines).strip() if search_text in modified_content: modified_content=modified_content.replace(search_text,replace_text) else: print(f"Warning: Search text not found in content: {search_text[:100]}...") return modified_content def apply_transformers_js_search_replace_changes(original_formatted_content: str, changes_text: str) -> str: """Apply search/replace changes to transformers.js formatted content (three files)""" if not changes_text.strip(): return original_formatted_content files=parse_transformers_js_output(original_formatted_content) blocks=[]; current_block="" lines=changes_text.split('\n') for line in lines: if line.strip()==SEARCH_START: if current_block.strip(): blocks.append(current_block.strip()) current_block=line+"\n" elif line.strip()==REPLACE_END: current_block+=line+"\n" blocks.append(current_block.strip()) current_block="" else: current_block+=line+"\n" if current_block.strip(): blocks.append(current_block.strip()) for block in blocks: lines=block.split('\n') search_lines=[]; replace_lines=[] in_search=False; in_replace=False; target_file=None for ln in lines: if ln.strip()==SEARCH_START: in_search=True; in_replace=False elif ln.strip()==DIVIDER: in_search=False; in_replace=True elif ln.strip()==REPLACE_END: in_replace=False elif in_search: search_lines.append(ln) elif in_replace: replace_lines.append(ln) if search_lines: search_text='\n'.join(search_lines).strip() replace_text='\n'.join(replace_lines).strip() if search_text in files['index.html']: target_file='index.html' elif search_text in files['index.js']: target_file='index.js' elif search_text in files['style.css']: target_file='style.css' if target_file and search_text in files[target_file]: files[target_file]=files[target_file].replace(search_text,replace_text) else: print(f"Warning: Search text not found in any transformers.js file: {search_text[:100]}...") return format_transformers_js_output(files)