|
Мандат агента: флаг доступности и гейт (0.85)
- services/claims.py: рамка мандата (ТЗ 3.20) — агент меняет только задачи с флагом ai_eligible, а сам флаг ставит только владелец: иначе «пометил и закрыл» обходило бы правило. Ошибка — доменным исключением MandateError: REST отдаёт по нему 403, MCP — текст с подсказкой следующего шага (стиль 3.10), а правило одно на оба пути. - REST: PATCH проверяет рамку до правок; create принимает флаг (своя задача — можно), пишет created_by_kind/created_by_name. Список задач фильтруется по ai_eligible, created_by_kind и accept_state — признаки лежат в самой задаче, а не в join'е. - MCP: update_task принимает ai_eligible (только владелец) и отказывает агенту на задаче без флага с подсказкой «попросите владельца пометить или действуйте с is_user=true»; create_task принимает флаг; list_tasks фильтруется теми же полями; _compact отдаёт агенту ai_eligible, created_by_kind/name, accept_state, claimed_by. - tests/test_agent_mandate.py: 12 тестов — дефолт «нет», гейт REST и MCP, отказ агенту в выдаче флага себе, Bearer-токен на REST как агент по умолчанию и владелец под заголовком X-Actor, фильтры списка, поля мандата в ответах тулов. ТЗ 0.85. |
|---|
|
|
| backend/app/api/tasks.py |
|---|
| backend/app/mcp_server.py |
|---|
| backend/app/services/claims.py 0 → 100644 |
|---|
| backend/tests/test_agent_mandate.py 0 → 100644 |
|---|
| backend/tests/test_task_events.py |
|---|