feat: Initial library extraction from PIN LLM benchmark

DockerSandbox + LangChain file/shell tools extracted into a standalone package.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-04-02 11:47:44 +02:00
commit 80c2f9b159
17 changed files with 758 additions and 0 deletions

View File

@@ -0,0 +1,32 @@
"""list_dir.py tool for listing directory contents inside the sandbox."""
from __future__ import annotations
from shlex import quote
from typing import TYPE_CHECKING
from langchain_core.tools import BaseTool, tool
from loguru import logger
if TYPE_CHECKING:
from docker_agent_sandbox.sandbox import DockerSandbox
def make_list_dir_tool(sandbox: "DockerSandbox") -> BaseTool:
"""Return a list_dir tool bound to *sandbox*."""
@tool
def list_dir(path: str = ".") -> str:
"""
List the contents of a directory at *path*.
Returns ``ls -lA`` output,
or an error message if the path does not exist or is not a directory.
"""
logger.debug("Listing files inside sandbox: {}", path)
exit_code, output = sandbox.exec(f"ls -lA -- {quote(path)}")
if exit_code != 0:
return f"[ERROR listing {path!r}] {output.strip()}"
return output
return list_dir