1.1.3

Fixed (#375)

  • Убрано дублирование управления подагентами (#375): строка «Сабагенты» на странице «Разрешения» (флаг tools.spawn) удалена на фронте и беке — единственное место включения подагентов теперь страница «Подагенты» (/agents/[id]/subagents, секция subagents в конфиге агента). Backend: поле Spawn удалено из ToolsPermissions (включая legacy-схему и MigrateLegacyTools), пресет «Ассистент» и readonly-оверлей больше не трогают spawn, правило валидации «spawn requires read_file and exec» удалено; гейт регистрации spawn/spawn_cancel/task-инструментов в registerToolsForAgentsubagentMgr != nil && autonomy != "readonly" && cfg.Enabled (readonly-автономность по-прежнему программно блокирует подагентов, теперь прямым сравнением уровня вместо оверлея разрешений); LoadSubagentsConfig при отсутствии секции subagents в конфиге агента возвращает Enabled=false — runtime-дефолт совпадает с UI страницы «Подагенты» (раньше дефолтил true, и реальным фильтром для агентов без конфига служило именно разрешение). Frontend: строка удалена из TOOL_ITEMS, applyToolPreset упрощён (пресеты больше не сохраняют spawn), spawn убран из типа ToolsPermissions и дефолтов, страница «Подагенты» больше не синхронизирует tools.spawn через permissions API. Миграция БД не требуется: сохранённый в agents.permissions JSON с tools.spawn молча игнорируется при unmarshal. Поведенческое изменение: агенты, у которых spawn работал только через разрешение без явного включения на странице «Подагенты», перестают порождать подагентов до ручного включения toggle’а (отмечено в docs/guide/subagents.md). Тесты: обновлены TestRegisterToolsForAgent_DepthLimit/_DisabledConfig (гейт — только конфиг), новые TestRegisterToolsForAgent_NoSubagentsSection, TestRegisterToolsForAgent_ReadonlyAutonomyBlocksSpawn, TestLoadSubagentsConfig_NoSectionDisabled; TestLoadSubagentsConfig_EmptyConfig перевёрнут под новый дефолт.