def build_prompt()

in utils/prompt.py [0:0]


def build_prompt(tools) -> str:
    template = PromptTemplate.from_template(Path("agent/react.prompt").read_text())

    # Compose tool descriptions and names
    tool_names = ", ".join(getattr(t, "name", str(t)) for t in tools)
    tool_lines = []
    for t in tools:
        name = getattr(t, "name", t.__class__.__name__)
        desc = getattr(t, "description", "") or ""
        # Try to extract argument names if available
        args_list = []
        try:
            args = getattr(t, "args", None)
            if isinstance(args, dict):
                args_list = list(args.keys())
        except Exception:
            pass
        args_str = f" Args: {', '.join(args_list)}" if args_list else ""
        tool_lines.append(f"- {name}: {desc}{args_str}")
    tools_block = "\n".join(tool_lines)

    # Inject placeholders now using partial
    return str(template.invoke(input={"tools": tools_block, "tool_names": tool_names}))