diff --git a/lib/cli/src/crewai_cli/create_json_crew.py b/lib/cli/src/crewai_cli/create_json_crew.py index 1df9f0310..36cfb0c0d 100644 --- a/lib/cli/src/crewai_cli/create_json_crew.py +++ b/lib/cli/src/crewai_cli/create_json_crew.py @@ -97,7 +97,7 @@ requires = ["hatchling"] build-backend = "hatchling.build" [tool.hatch.build.targets.wheel] -only-include = ["agents", "crew.jsonc", "tools", "knowledge", "skills"] +only-include = ["agents", "crew.jsonc", "tools", "knowledge", "skills", "src"] [tool.crewai] type = "crew" @@ -680,7 +680,7 @@ def _default_agents_and_tasks( ] crew_settings = { "process": "sequential", - "memory": False, + "memory": True, "inputs": {}, } return agents, tasks, crew_settings @@ -1138,6 +1138,10 @@ def create_json_crew( encoding="utf-8", ) + from crewai_cli.deploy.archive import add_json_crew_deploy_wrapper + + add_json_crew_deploy_wrapper(folder_path) + # Write .gitignore (folder_path / ".gitignore").write_text(_GITIGNORE, encoding="utf-8") diff --git a/lib/cli/src/crewai_cli/deploy/archive.py b/lib/cli/src/crewai_cli/deploy/archive.py index 14835579d..4307dcef9 100644 --- a/lib/cli/src/crewai_cli/deploy/archive.py +++ b/lib/cli/src/crewai_cli/deploy/archive.py @@ -145,7 +145,7 @@ def _stage_project(root: Path, files: list[Path]) -> Path: shutil.copy2(source, destination) if _is_json_crew_project(staging_root): - _add_json_crew_deploy_wrapper(staging_root) + add_json_crew_deploy_wrapper(staging_root) except Exception: shutil.rmtree(staging_root, ignore_errors=True) raise @@ -212,7 +212,7 @@ def _class_name(package_name: str) -> str: return class_name -def _add_json_crew_deploy_wrapper(root: Path) -> None: +def add_json_crew_deploy_wrapper(root: Path) -> None: """Add Python wrapper files required to deploy a JSON crew project.""" package_name = _package_name(root) if package_name is None: diff --git a/lib/cli/tests/test_create_crew.py b/lib/cli/tests/test_create_crew.py index adfe1757f..f1bad77b6 100644 --- a/lib/cli/tests/test_create_crew.py +++ b/lib/cli/tests/test_create_crew.py @@ -712,6 +712,14 @@ def test_json_create_provider_preselects_default_model(tmp_path, monkeypatch): default_llm="openai/gpt-5.5", ) assert (tmp_path / "json_crew" / "crew.jsonc").exists() + assert (tmp_path / "json_crew" / "src" / "json_crew" / "crew.py").exists() + assert (tmp_path / "json_crew" / "src" / "json_crew" / "main.py").exists() + assert ( + tmp_path / "json_crew" / "src" / "json_crew" / "config" / "agents.yaml" + ).exists() + assert ( + tmp_path / "json_crew" / "src" / "json_crew" / "config" / "tasks.yaml" + ).exists() assert not (tmp_path / "json_crew" / "tests").exists() assert not (tmp_path / "json_crew" / "config.jsonc").exists() @@ -721,7 +729,12 @@ def test_json_create_provider_preselects_default_model(tmp_path, monkeypatch): assert Version("1.14.8a1") in Requirement(dependency).specifier assert pyproject["tool"]["hatch"]["build"]["targets"]["wheel"][ "only-include" - ] == ["agents", "crew.jsonc", "tools", "knowledge", "skills"] + ] == ["agents", "crew.jsonc", "tools", "knowledge", "skills", "src"] + assert pyproject["project"]["scripts"]["run_crew"] == "json_crew.main:run" + assert ( + pyproject["project"]["scripts"]["run_with_trigger"] + == "json_crew.main:run_with_trigger" + ) crew_template = (tmp_path / "json_crew" / "crew.jsonc").read_text() assert ( @@ -849,7 +862,7 @@ def test_json_create_dmn_mode_uses_non_interactive_defaults(tmp_path, monkeypatc crew_template = (project_root / "crew.jsonc").read_text() agent_template = (project_root / "agents" / "researcher.jsonc").read_text() - assert '"memory": false' in crew_template + assert '"memory": true' in crew_template assert '"description": "Research current AI trends and write a concise summary."' in ( crew_template )