Skip to content

AI-EDT v0.2.34

Choose a tag to compare

@github-actions github-actions released this 20 Aug 07:52
· 70 commits to main since this release

Обновление на поддержке доведено до сценария, отвечают три базовых метода протокола, поиск больше не требует называть проект.

Решения возвращаются от того, кто их принял

compare_three_way получил decisionsFrom - путь к файлу настроек, записанному раньше этим же инструментом или человеком в EDT. Восстанавливаются обе половины файла: правила объединения и соответствия объектов, установленные вручную между теми, что не совпадают ни по UUID, ни по имени.

Затвор объединения считал только решения, переданные в том же вызове, поэтому объединение по файлу отклонялось с decided=0, пока окружение уже держало правила. Теперь затвор видит оба источника, а отказ называет оба пути входа. Файл, который разобрался и не нёс решений, отличается от применённого полем decisionsRestored.

decisionsPath проверяется на расширение .zip до вызова: окружение требует его внутренним Assert.isTrue, и без проверки отказ приходил как неудачная запись файла со ссылкой на ограничение, о котором вызывающему не сообщали.

Состояние проекта после объединения

При intent=MERGE затронутые объекты перевалидируются, и ответ несёт errorsAfterMerge и revalidatedAfterMerge. Взятие чужой версии объекта штатно ломает то, что ссылалось на прежнюю, поэтому ответ, останавливающийся на merged, верен и бесполезен.

Когда решения пришли файлом и списка объектов в вызове нет, объекты берутся из самого сравнения - иначе без проверки оставались бы ровно те объединения, что подготовлены вручную. Счёт ошибок по объектам реализован в одном месте, ProjectProblemsReader.countErrorsOn, и отвечает -1, когда его не удалось взять: ноль выглядит как чистый проект.

ping, resources/list, resources/read

Три метода, прежде отвечавшие -32601.

ping входит в базовую спецификацию с первой ревизии - клиент, проверявший живость стандартным способом, получал отказ.

resources/list и resources/read отдают описания проверок EDT: 167 документов под схемой aiedt://checks/<id>, text/markdown. Схема своя, а не file:, потому что описание может лежать внутри jar-а плагина, где открывать клиенту нечего. Список строится тем же CheckDocReader, который их читает, поэтому перечислить нельзя то, чего затем не выдать.

Возможность resources объявлена и в рукопожатии, и в server/discover. Подписка и уведомления об изменении списка не объявлены: сервер их не шлёт.

Поиск по всей рабочей области

У search_in_code (code_search operation=text_search) projectName стал необязательным. Без него ищутся все открытые проекты с исходниками, и ответ называет их поимённо.

Все корни идут в один сборщик, поэтому предел результатов и бюджет времени значат одно и то же при любом числе проектов; повторный проход с гибкими пробелами идёт по тем же корням. Явно названный несуществующий проект остаётся ошибкой.

Проверено на стенде

EDT 2026.2.0+289, рабочая область с конфигурацией, её расширениями и вторым комплектом БСП - 11 проектов.

Проверка Результат
Решение на родителе синоним реквизита табличной части тремя уровнями ниже принял сторону поставки
Объединение по одному файлу, без аргумента decisions decisionsRestored=true, merged=true, проект принял другую сторону
Файл отсутствует / расширение не .zip обе ветки отказа называют путь и причину
Состояние после объединения errorsAfterMerge=0, revalidatedAfterMerge=true
ping пустой результат, обе ревизии протокола
resources/list / resources/read 167 документов, markdown отдан
Поиск по одному проекту против всей области тот же запрос: 0 совпадений против 209 в 32 модулях

Сборка - 1640 тестов.