26 lines
1.1 KiB
Python
26 lines
1.1 KiB
Python
from app.core.contracts import UserTask
|
|
from app.runtime.runtime_controller import RuntimeController
|
|
|
|
|
|
def test_runtime_loop_emits_basic_events() -> None:
|
|
controller = RuntimeController()
|
|
result = controller.handle_task(UserTask(input="hello runtime"))
|
|
event_types = [event["type"] for event in result["events"]]
|
|
assert result["status"] == "completed"
|
|
assert "message" in result["result"]
|
|
assert "task_received" in event_types
|
|
assert "context_built" in event_types
|
|
assert "task_completed" in event_types
|
|
|
|
|
|
def test_runtime_loop_routes_natural_language_shell_request_to_permission_flow() -> None:
|
|
controller = RuntimeController()
|
|
result = controller.handle_task(UserTask(input="запусти sudo apt update"))
|
|
event_types = [event["type"] for event in result["events"]]
|
|
assert result["status"] == "awaiting_permission"
|
|
assert result["directive"]["type"] == "tool"
|
|
assert result["directive"]["payload"]["tool"] == "shell_exec"
|
|
assert "permission_requested" in event_types
|
|
assert "task_awaiting_permission" in event_types
|
|
assert result["result"]["error"] == "Permission required before execution."
|