POST /api/runs теперь планирует исполнение в фоновой asyncio.Task и
возвращает run_id (202 Accepted) — UI больше не блокируется на время
всего workflow.
Новый модуль src/run_registry.py держит in-memory LRU (лимит
RUN_REGISTRY_MAX_SIZE, default 200) с RunRecord на каждый запуск:
append-only буфер событий для replay + список подписчиков-очередей
для live tail. EventEmitter пишет в буфер и фан-аутит по очередям.
Новые endpoints:
- GET /api/runs/{run_id} снапшот состояния (частичный для running)
- GET /api/runs/{run_id}/events SSE: run_started, step_started,
step_finished, run_finished
- GET /api/scenarios список сценариев с метаданными
- GET /api/scenarios/{id} полное определение для UI-графа
- GET /api/tools проксирование MCP list_tools
mcp_workflow_runner дополнен хуком emitter'а в session_state и
обёрткой run_scenario_async, которая управляет лайфсайклом RunRecord:
queued → running → success/failed + terminal sentinel в очереди
подписчиков. На shutdown lifespan отменяет активные таски.
Все модели в schemas.py и dict-endpoints получили реалистичные
examples для /docs вместо дефолтного additionalProp1.
Подключить loguru и заменить молчаливые except на warning/exception
в step_planner, mcp_client и mcp_workflow_runner — раньше ошибки
терялись в пустых дикт-возвратах.\n
Перенести Phoenix tracing из module-level в FastAPI lifespan, чтобы
импорт agent_os не поднимал трейсер в тестах и тулах.\n
Заменить неограниченный dict _workflow_cache на OrderedDict-LRU
с лимитом WORKFLOW_CACHE_MAX_SIZE (default 64) — чтобы кэш не рос
бесконечно при разных scenario_id.\n
Зафиксировать инвариант fail-fast: шаги, не дошедшие до исполнения
из-за падения upstream, возвращаются со статусом skipped (для UI),
а не queued; run помечается success только если все payload.ok.\n
Добавить module docstrings во все модули src/ по STYLE_GUIDE cookbook.
Запинить версии зависимостей в requirements.txt.
Перенесены planner/template хелперы в отдельные модули, выровнен формат статусов и сообщений в ответе, а также обновлены .env.example и README под текущие переменные и поведение API.
Удален legacy workflow_runner со stub-инструментами, добавлен mcp_client и новый mcp_workflow_runner с planner-моделью через polza.ai, обновлены сценарий, API/AgentOS wiring и документация под текущий контур запуска.
Введен единый JSON-контракт для success/failed с общими полями, добавлен трекинг step status (queued/running/success/failed) и output_summary, а сборка run-ответа централизована через общий helper.