mirror of
https://github.com/crewAIInc/crewAI.git
synced 2026-07-06 15:39:24 +00:00
Implement DMN mode support in crew creation and execution (#6194)
* Implement DMN mode support in crew creation and execution - Added `is_dmn_mode_enabled` utility to check for enterprise non-interactive mode based on the `CREWAI_DMN` environment variable. - Updated `create` function in `cli.py` to enforce required parameters when DMN mode is active, raising appropriate usage errors. - Enhanced `create_crew` and `create_json_crew` functions to skip provider prompts and handle folder existence checks in DMN mode. - Introduced non-interactive defaults for agent and task creation in DMN mode, ensuring seamless project setup without user input. - Modified `run_crew` to bypass TUI and handle runtime inputs directly when in DMN mode, improving execution flow for JSON-defined crews. - Added tests to validate DMN mode behavior, ensuring correct handling of required inputs and non-interactive defaults. * Implement DMN mode support in crew creation and execution - Introduced `is_dmn_mode_enabled()` utility to check for non-interactive mode based on the `CREWAI_DMN` environment variable. - Updated `create` function to enforce required parameters when DMN mode is active, raising appropriate usage errors. - Modified `create_crew` and `create_json_crew` functions to skip provider prompts and utilize non-interactive defaults in DMN mode. - Enhanced `run_crew` to bypass TUI and handle runtime inputs directly in DMN mode, ensuring smooth execution without user interaction. - Added tests to validate DMN mode behavior, including requirements for type and name, and ensuring proper handling of existing folders and missing inputs.
This commit is contained in:
@@ -812,3 +812,34 @@ def test_json_wizard_task_reprompts_on_cancelled_agent_pick(monkeypatch):
|
||||
|
||||
assert len(pick_calls) == 2
|
||||
assert task["agent"] == "second_agent"
|
||||
|
||||
|
||||
def test_json_create_dmn_mode_uses_non_interactive_defaults(tmp_path, monkeypatch):
|
||||
monkeypatch.chdir(tmp_path)
|
||||
monkeypatch.setenv("CREWAI_DMN", "True")
|
||||
monkeypatch.setattr(
|
||||
json_crew,
|
||||
"_wizard_agents_and_tasks",
|
||||
lambda **_: pytest.fail("DMN mode must not run the wizard"),
|
||||
)
|
||||
monkeypatch.setattr(
|
||||
json_crew,
|
||||
"_setup_env",
|
||||
lambda *_args, **_kwargs: pytest.fail("DMN mode must not prompt for env vars"),
|
||||
)
|
||||
|
||||
json_crew.create_json_crew("DMN Crew", provider="anthropic", skip_provider=False)
|
||||
|
||||
project_root = tmp_path / "dmn_crew"
|
||||
assert (project_root / "crew.jsonc").exists()
|
||||
assert (project_root / "agents" / "researcher.jsonc").exists()
|
||||
assert not (project_root / ".env").exists()
|
||||
|
||||
crew_template = (project_root / "crew.jsonc").read_text()
|
||||
agent_template = (project_root / "agents" / "researcher.jsonc").read_text()
|
||||
|
||||
assert '"memory": false' in crew_template
|
||||
assert '"description": "Research current AI trends and write a concise summary."' in (
|
||||
crew_template
|
||||
)
|
||||
assert '"llm": "anthropic/claude-opus-4-6"' in agent_template
|
||||
|
||||
Reference in New Issue
Block a user