1.0.5

Fixed (#367)

  • skill end больше не падает «skill is not found or not enabled for agent», если навык удалён/отключён между begin и end (#367): endAction гонял общую с begin/activate валидацию lookupEnabledForAgent ДО поиска running-run’а, хотя end — телеметрия, а не гейт (комментарий кода прямо обещает «тихо возвращаем echo… не ошибка, чтобы не ломать turn LLM»). Теперь ErrSkillNotEnabled не фатален: run ищется по SkillRun.SkillName и закрывается через FinishSkillRun; для удалённого навыка run удаляется FK-каскадом (миграция 086: skill_id REFERENCES skills ON DELETE CASCADE, в SQLite включён foreign_keys(1), PG-миграция паритетна) — возвращается тихий echo с run_id=0; прочие ошибки store фатальны, как раньше. Выяснено при реализации: гипотеза «DeleteSkill оставляет running-раны висеть до orphan-маркера» неверна — каскад удаляет их в обеих СУБД, отдельная зачистка в deleteAction не нужна. Тесты: TestSkillTool_End_DeletedSkill_LenientEcho, TestSkillTool_End_DisabledSkill_ClosesRunByName, TestSkillTool_End_NotEnabled_NoRun_EchoOK.