fix: scaffold deployable json crews

This commit is contained in:
Joao Moura
2026-06-18 16:17:22 -07:00
parent 9db2d44766
commit 84227d378c
3 changed files with 23 additions and 6 deletions

View File

@@ -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")

View File

@@ -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:

View File

@@ -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
)