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-инструментов вregisterToolsForAgent—subagentMgr != 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.permissionsJSON сtools.spawnмолча игнорируется при unmarshal. Поведенческое изменение: агенты, у которых spawn работал только через разрешение без явного включения на странице «Подагенты», перестают порождать подагентов до ручного включения toggle’а (отмечено вdocs/guide/subagents.md). Тесты: обновленыTestRegisterToolsForAgent_DepthLimit/_DisabledConfig(гейт — только конфиг), новыеTestRegisterToolsForAgent_NoSubagentsSection,TestRegisterToolsForAgent_ReadonlyAutonomyBlocksSpawn,TestLoadSubagentsConfig_NoSectionDisabled;TestLoadSubagentsConfig_EmptyConfigперевёрнут под новый дефолт.