From 920ef0def1a2ef2252da72e3d88aeaeb2a8ef802 Mon Sep 17 00:00:00 2001 From: CleverThis Date: Thu, 11 Jun 2026 12:14:24 -0400 Subject: [PATCH] fix(a2a): re-raise typer.Exit in actor run commands and step catches typer.Exit is not a subclass of click.exceptions.Exit in this project's version of typer. The except clause in actor.run() and actor_run.run() only caught click.exceptions.Exit, so typer.Exit(code=2) raised by _resolve_config_files (not-found / no-config-data paths) fell through to the broad except Exception handler and was re-raised as typer.Exit(code=3), failing the exit_code==2 assertions. BDD step files had the same gap: the (SystemExit, click.exceptions.Exit) catch in actor_run_signature_resolve_steps.py and actor_run_signature_security_steps.py did not include typer.Exit, so resolve_config_files error scenarios errored instead of being caught. ISSUES CLOSED: #691 --- features/steps/actor_run_signature_resolve_steps.py | 8 ++++---- features/steps/actor_run_signature_security_steps.py | 2 +- src/cleveragents/cli/commands/actor.py | 2 +- src/cleveragents/cli/commands/actor_run.py | 2 +- 4 files changed, 7 insertions(+), 7 deletions(-) diff --git a/features/steps/actor_run_signature_resolve_steps.py b/features/steps/actor_run_signature_resolve_steps.py index ab6bc56c8..e423d2584 100644 --- a/features/steps/actor_run_signature_resolve_steps.py +++ b/features/steps/actor_run_signature_resolve_steps.py @@ -165,7 +165,7 @@ def step_resolve_with_no_config_data(context: Any) -> None: try: resolve_config_files("local/empty-actor", []) context.resolve_exit_code = 0 - except (SystemExit, click.exceptions.Exit) as exc: + except (SystemExit, click.exceptions.Exit, typer.Exit) as exc: context.resolve_exit_code = getattr( exc, "exit_code", getattr(exc, "code", 1) ) @@ -209,7 +209,7 @@ def step_resolve_unknown_actor_directly(context: Any) -> None: try: resolve_config_files("nonexistent/actor", []) context.resolve_exit_code = 0 - except (SystemExit, click.exceptions.Exit) as exc: + except (SystemExit, click.exceptions.Exit, typer.Exit) as exc: context.resolve_exit_code = getattr( exc, "exit_code", getattr(exc, "code", 1) ) @@ -260,7 +260,7 @@ def step_resolve_with_empty_config_blob(context: Any) -> None: try: resolve_config_files("local/empty-blob-actor", []) context.resolve_exit_code = 0 - except (SystemExit, click.exceptions.Exit) as exc: + except (SystemExit, click.exceptions.Exit, typer.Exit) as exc: context.resolve_exit_code = getattr( exc, "exit_code", getattr(exc, "code", 1) ) @@ -356,7 +356,7 @@ def step_resolve_with_unserializable_config_blob(context: Any) -> None: try: resolve_config_files("local/bad-blob-actor", []) context.resolve_exit_code = 0 - except (SystemExit, click.exceptions.Exit) as exc: + except (SystemExit, click.exceptions.Exit, typer.Exit) as exc: context.resolve_exit_code = getattr( exc, "exit_code", getattr(exc, "code", 1) ) diff --git a/features/steps/actor_run_signature_security_steps.py b/features/steps/actor_run_signature_security_steps.py index 7e93caf7a..889b48b8f 100644 --- a/features/steps/actor_run_signature_security_steps.py +++ b/features/steps/actor_run_signature_security_steps.py @@ -49,7 +49,7 @@ def step_resolve_with_control_character_name(context: Any) -> None: try: resolve_config_files(actor_name, []) context.resolve_exit_code = 0 - except (SystemExit, click.exceptions.Exit) as exc: + except (SystemExit, click.exceptions.Exit, typer.Exit) as exc: context.resolve_exit_code = getattr( exc, "exit_code", getattr(exc, "code", 1) ) diff --git a/src/cleveragents/cli/commands/actor.py b/src/cleveragents/cli/commands/actor.py index fa0723afc..d4d0dc3f0 100644 --- a/src/cleveragents/cli/commands/actor.py +++ b/src/cleveragents/cli/commands/actor.py @@ -185,7 +185,7 @@ def run( except UnsafeConfigurationError as exc: typer.echo(f"Error: {exc}", err=True) raise typer.Exit(code=1) from exc - except click.exceptions.Exit: + except (click.exceptions.Exit, typer.Exit): raise except CleverAgentsError as exc: typer.echo(f"Error: {exc}", err=True) diff --git a/src/cleveragents/cli/commands/actor_run.py b/src/cleveragents/cli/commands/actor_run.py index 14b2d2cf2..0131bd692 100644 --- a/src/cleveragents/cli/commands/actor_run.py +++ b/src/cleveragents/cli/commands/actor_run.py @@ -159,7 +159,7 @@ def run( except UnsafeConfigurationError as exc: typer.echo(f"Error: {exc}", err=True) raise typer.Exit(code=1) from exc - except click.exceptions.Exit: + except (click.exceptions.Exit, typer.Exit): raise except CleverAgentsError as exc: typer.echo(f"Error: {exc}", err=True)