From bdd1bc62007fcee732c912f0daa093e1f760f3fc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=A3o=20Moura?= Date: Tue, 22 Sep 2026 03:41:50 -0300 Subject: [PATCH] chore(cli): move `crewai eval` under experimental (#7707) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Nothing about the command changes. It is still `crewai eval`, still listed in `--help`, still takes `--run`, still prints the same lines. Only the module moved, from `crewai_cli/eval_crew.py` to `crewai_cli/experimental/eval_crew.py`, with its tests alongside. The package says what the command's location could not: its output and its options may change between releases without the deprecation cycle a settled command gets. That is honest about where it stands — most of what it depends on lives outside this repository, in an AMP endpoint and the evaluator behind it, and both are new enough that the report's shape is still moving. The command is already built to absorb some of that, printing whatever the evaluation graded rather than a list of its own, but the promise it makes to a user should match. `crewai/experimental/` has the same role on the library side, so this is the convention the repository already has rather than a new one. The CLI had no experimental package before; it does now, and `crewai eval` is its first tenant. Co-authored-by: Claude Opus 5 (1M context) --- lib/cli/src/crewai_cli/cli.py | 2 +- lib/cli/src/crewai_cli/experimental/__init__.py | 13 +++++++++++++ .../src/crewai_cli/{ => experimental}/eval_crew.py | 0 lib/cli/tests/experimental/__init__.py | 0 lib/cli/tests/{ => experimental}/test_eval_crew.py | 2 +- 5 files changed, 15 insertions(+), 2 deletions(-) create mode 100644 lib/cli/src/crewai_cli/experimental/__init__.py rename lib/cli/src/crewai_cli/{ => experimental}/eval_crew.py (100%) create mode 100644 lib/cli/tests/experimental/__init__.py rename lib/cli/tests/{ => experimental}/test_eval_crew.py (99%) diff --git a/lib/cli/src/crewai_cli/cli.py b/lib/cli/src/crewai_cli/cli.py index 0250289d3..2c8f9e01f 100644 --- a/lib/cli/src/crewai_cli/cli.py +++ b/lib/cli/src/crewai_cli/cli.py @@ -49,7 +49,7 @@ def run_crew(*args: Any, **kwargs: Any) -> Any: def eval_crew(*args: Any, **kwargs: Any) -> Any: - from crewai_cli.eval_crew import eval_crew as _eval_crew + from crewai_cli.experimental.eval_crew import eval_crew as _eval_crew return _eval_crew(*args, **kwargs) diff --git a/lib/cli/src/crewai_cli/experimental/__init__.py b/lib/cli/src/crewai_cli/experimental/__init__.py new file mode 100644 index 000000000..bd40690f0 --- /dev/null +++ b/lib/cli/src/crewai_cli/experimental/__init__.py @@ -0,0 +1,13 @@ +"""Commands whose shape is not settled yet. + +What lives here still works exactly like the rest of the CLI — it is listed in +`crewai --help` and invoked the same way. The package says something narrower: +its behaviour, its output and its options may change between releases without +the deprecation cycle the settled commands get. + +`crewai eval` is here because most of what it depends on lives outside this +repository — an AMP endpoint and the evaluator behind it — and both are new +enough that the report's shape is still moving. The command itself is +deliberately tolerant of that: it prints whatever the evaluation graded rather +than a list of its own. +""" diff --git a/lib/cli/src/crewai_cli/eval_crew.py b/lib/cli/src/crewai_cli/experimental/eval_crew.py similarity index 100% rename from lib/cli/src/crewai_cli/eval_crew.py rename to lib/cli/src/crewai_cli/experimental/eval_crew.py diff --git a/lib/cli/tests/experimental/__init__.py b/lib/cli/tests/experimental/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/lib/cli/tests/test_eval_crew.py b/lib/cli/tests/experimental/test_eval_crew.py similarity index 99% rename from lib/cli/tests/test_eval_crew.py rename to lib/cli/tests/experimental/test_eval_crew.py index 8a5a345aa..ce5007059 100644 --- a/lib/cli/tests/test_eval_crew.py +++ b/lib/cli/tests/experimental/test_eval_crew.py @@ -12,7 +12,7 @@ import httpx import pytest from rich.console import Console -from crewai_cli import eval_crew as eval_module +from crewai_cli.experimental import eval_crew as eval_module from crewai_cli.cli import eval_command