mirror of
https://github.com/bytedance/deer-flow.git
synced 2026-10-26 13:16:24 +00:00
* feat(scheduler): create conversation schedules and support agent self-stop * fix(scheduler): validate goals and trial requests before dispatch --------- Co-authored-by: Totoro-qaq <279883115+Totoro-qaq@users.noreply.github.com>
29 lines
1.2 KiB
Python
29 lines
1.2 KiB
Python
"""Serialized scheduler evidence must not grant run authority."""
|
|
|
|
from app.gateway import services
|
|
|
|
|
|
def test_untrusted_scheduler_metadata_is_removed_without_losing_user_data():
|
|
supplied = {
|
|
"scheduled_task_id": "foreign",
|
|
"scheduled_task_run_id": "foreign-occurrence",
|
|
"scheduled_goal_objective": "Read private data",
|
|
"scheduled_previous_thread_id": "foreign-thread",
|
|
"scheduled_tool_created": True,
|
|
"scheduled_context_mode": "fresh_thread_per_run",
|
|
"user_label": "keep",
|
|
}
|
|
result = services._admit_scheduler_metadata(supplied, trusted=False)
|
|
assert result == {"user_label": "keep"}
|
|
assert supplied["scheduled_tool_created"] is True
|
|
|
|
|
|
def test_internal_launch_retains_only_its_data_snapshot():
|
|
supplied = {"scheduled_task_id": "task", "scheduled_task_run_id": "occurrence", "scheduled_goal_objective": "Report exists", "scheduled_trigger": "manual"}
|
|
assert services._admit_scheduler_metadata(supplied, trusted=True) == supplied
|
|
|
|
|
|
def test_scheduling_metadata_never_recovers_a_callable_capability():
|
|
result = services._admit_scheduler_metadata({"__scheduler_capability": {"mode": "scheduled"}, "user_label": "keep"}, trusted=False)
|
|
assert "__scheduler_capability" not in result
|