From 50a1310463db611664619bf3878d82d1e16ab193 Mon Sep 17 00:00:00 2001 From: Silvio Junior Date: Fri, 28 Aug 2026 17:19:27 +0000 Subject: [PATCH] feat(agy_cli): pass --add-dir flag automatically on agy CLI invocations --- evalbench/generators/models/agy_cli.py | 13 +++++++++---- evalbench/test/agy_cli_test.py | 11 +++++++---- 2 files changed, 16 insertions(+), 8 deletions(-) diff --git a/evalbench/generators/models/agy_cli.py b/evalbench/generators/models/agy_cli.py index 37eee849..9f3d90f0 100644 --- a/evalbench/generators/models/agy_cli.py +++ b/evalbench/generators/models/agy_cli.py @@ -506,7 +506,7 @@ def _verify_runtime(self, configured_servers: list): env = self._merged_env() cmd = self._base_agy_command( - self.agy_bin, "ping", model=self.model + self.agy_bin, "ping", model=self.model, add_dirs=[self.fake_home] ) try: subprocess.run( @@ -833,7 +833,7 @@ def _merged_env(self, extra: dict | None = None) -> dict: def _base_agy_command( cli: str, prompt: str, resume: bool = False, model: str = None, output_format: str = None, log_file: str = None, - timeout: str = None, + timeout: str = None, add_dirs: list[str] | str | None = None, ) -> list: """Builds the non-interactive ``agy -p`` argv shared by the eval turn path and the setup-time MCP probe. @@ -854,6 +854,11 @@ def _base_agy_command( defaults to agy's internal default (5 minutes). """ command = [cli, "-p", prompt, "--dangerously-skip-permissions"] + if add_dirs: + if isinstance(add_dirs, str): + add_dirs = [add_dirs] + for d in add_dirs: + command += ["--add-dir", d] if model: command += ["--model", model] if output_format: @@ -895,15 +900,15 @@ def _execute_cli_command( def _run_agy_cli(self, cli_cmd: CLICommand): env = self._merged_env(cli_cmd.env) + cwd = cli_cmd.cwd if cli_cmd.cwd else self.fake_home # The executable is always this session's sandbox binary, regardless of # the label carried on cli_cmd.cli (the evaluator passes agent_version, # "agy", which is not a path). command = self._base_agy_command( self.agy_bin, cli_cmd.prompt, cli_cmd.resume, self.model, output_format="stream-json", log_file=self.cli_log_path, - timeout=self.timeout, + timeout=self.timeout, add_dirs=[cwd], ) - cwd = cli_cmd.cwd if cli_cmd.cwd else self.fake_home result = self._execute_cli_command(command, env=env, cwd=cwd) # Parse whenever agy emitted a stream, even on a non-zero exit: a diff --git a/evalbench/test/agy_cli_test.py b/evalbench/test/agy_cli_test.py index 80b236e8..fd1a31f9 100644 --- a/evalbench/test/agy_cli_test.py +++ b/evalbench/test/agy_cli_test.py @@ -265,7 +265,7 @@ def test_ensure_agy_installed_raises_when_binary_absent_after_install( def test_run_command_argv_shape(mock_run, sandbox): """``_run_agy_cli`` must build ``agy -p - --dangerously-skip-permissions --output-format stream-json``.""" + --dangerously-skip-permissions --add-dir --output-format stream-json``.""" generator = AgyCliGenerator({}) cmd = CLICommand(cli="agy", prompt="hello world") generator._run_agy_cli(cmd) @@ -273,7 +273,8 @@ def test_run_command_argv_shape(mock_run, sandbox): sent_argv = mock_run.call_args[0][0] assert sent_argv == [ generator.agy_bin, "-p", "hello world", - "--dangerously-skip-permissions", "--output-format", "stream-json", + "--dangerously-skip-permissions", "--add-dir", generator.fake_home, + "--output-format", "stream-json", "--log-file", generator.cli_log_path, ] @@ -286,7 +287,8 @@ def test_run_command_argv_shape_with_continue(mock_run, sandbox): sent_argv = mock_run.call_args[0][0] assert sent_argv == [ generator.agy_bin, "-p", "next turn", - "--dangerously-skip-permissions", "--output-format", "stream-json", + "--dangerously-skip-permissions", "--add-dir", generator.fake_home, + "--output-format", "stream-json", "--log-file", generator.cli_log_path, "--continue", ] @@ -321,7 +323,8 @@ def test_run_command_argv_shape_with_timeout(mock_run, sandbox): sent_argv = mock_run.call_args[0][0] assert sent_argv == [ generator.agy_bin, "-p", "hello world", - "--dangerously-skip-permissions", "--output-format", "stream-json", + "--dangerously-skip-permissions", "--add-dir", generator.fake_home, + "--output-format", "stream-json", "--log-file", generator.cli_log_path, "--print-timeout", "20m", ]