CoACT initialize (#292)
This commit is contained in:
56
mm_agents/coact/autogen/coding/utils.py
Normal file
56
mm_agents/coact/autogen/coding/utils.py
Normal file
@@ -0,0 +1,56 @@
|
||||
# Copyright (c) 2023 - 2025, AG2ai, Inc., AG2ai open-source projects maintainers and core contributors
|
||||
#
|
||||
# SPDX-License-Identifier: Apache-2.0
|
||||
#
|
||||
# Portions derived from https://github.com/ag2ai/ag2 are under the MIT License.
|
||||
# SPDX-License-Identifier: MIT
|
||||
# Will return the filename relative to the workspace path
|
||||
import re
|
||||
from pathlib import Path
|
||||
from typing import Optional
|
||||
|
||||
filename_patterns = [
|
||||
re.compile(r"^<!-- (filename:)?(.+?) -->", re.DOTALL),
|
||||
re.compile(r"^/\* (filename:)?(.+?) \*/", re.DOTALL),
|
||||
re.compile(r"^// (filename:)?(.+?)$", re.DOTALL),
|
||||
re.compile(r"^# (filename:)?(.+?)$", re.DOTALL),
|
||||
]
|
||||
|
||||
|
||||
# Raises ValueError if the file is not in the workspace
|
||||
def _get_file_name_from_content(code: str, workspace_path: Path) -> Optional[str]:
|
||||
first_line = code.split("\n")[0].strip()
|
||||
# TODO - support other languages
|
||||
for pattern in filename_patterns:
|
||||
matches = pattern.match(first_line)
|
||||
if matches is not None:
|
||||
filename = matches.group(2).strip()
|
||||
|
||||
# Handle relative paths in the filename
|
||||
path = Path(filename)
|
||||
if not path.is_absolute():
|
||||
path = workspace_path / path
|
||||
path = path.resolve()
|
||||
# Throws an error if the file is not in the workspace
|
||||
relative = path.relative_to(workspace_path.resolve())
|
||||
return str(relative)
|
||||
return None
|
||||
|
||||
|
||||
def silence_pip(code: str, lang: str) -> str:
|
||||
"""Apply -qqq flag to pip install commands."""
|
||||
if lang == "python":
|
||||
regex = r"^! ?pip install"
|
||||
elif lang in ["bash", "shell", "sh", "pwsh", "powershell", "ps1"]:
|
||||
regex = r"^pip install"
|
||||
else:
|
||||
return code
|
||||
|
||||
# Find lines that start with pip install and make sure "-qqq" flag is added.
|
||||
lines = code.split("\n")
|
||||
for i, line in enumerate(lines):
|
||||
# use regex to find lines that start with pip install.
|
||||
match = re.search(regex, line)
|
||||
if match is not None and "-qqq" not in line:
|
||||
lines[i] = line.replace(match.group(0), match.group(0) + " -qqq")
|
||||
return "\n".join(lines)
|
||||
Reference in New Issue
Block a user