0.167.2

Fixed

  • Ложный 409 Conflict при сохранении MCP/permissions агента. На страницах /agents/{id}/mcp и /agents/{id}/permissions после нажатия Save появлялся баннер «agent was modified by another request, please retry», хотя фактически изменения сохранялись. Причина — race condition в PermissionsStore.save() (web/src/lib/features/permissions/usePermissions.svelte.ts): permissions.update и agents.update запускались параллельно через Promise.all, оба пишут в таблицу agents. UpdateAgentPermissions (internal/store/sqlite.go:563) фиксирует updated_at = NOW, а AgentHandler.Update (internal/server/handler/agent.go:272) идёт через UpdateAgentIfNotChanged с optimistic locking WHERE id=? AND updated_at=?. Когда первый UPDATE фиксируется раньше — второй видит уже обновлённый updated_at, получает RowsAffected=0 и возвращает ErrConcurrentModification → HTTP 409. Promise.all реджектится целиком → ошибка показывается пользователю. Фикс: запросы выполняются последовательно (permissions.updateagents.update); ответ permRes применяется к локальному стейту сразу после первого запроса, чтобы при падении второго retry не переслал «грязные» локальные данные.