Skip to content

v1.15.0

Choose a tag to compare

@github-actions github-actions released this 31 May 13:12
· 13 commits to master since this release

Добавлено

  • Полнотекстовый поиск по ВСЕМ файлам конфигурации через движок git grep — киллер-фича для «непредметного» поиска. Новый хелпер git_search(pattern, path='', file_types='', regex=False, ignore_case=False, mode='lines', max_results=200) подключает git grep как новый бэкенд поиска. Активируется opt-in, автоматически когда исходники 1С — git-рабочее-дерево (есть .git) и установлен git. Закрывает системную дыру: SQLite-индекс и FTS5 ищут только по именам (методов, объектов, синонимов), safe_grep ограничен набором ≤max_files BSL-файлов, а сырой .xml/.mdo (формы, права ролей, СКД, ConfigDumpInfo) не покрыт вообще. git_search за доли секунды ищет любую подстроку по всем отслеживаемым + новым untracked файлам.

    Очень сильная фича именно для «непредметного» поиска: любые термины/фразы, GUID/номера, сообщения пользователю, куски запросов, строковые литералы, XML-атрибуты форм/прав/СКД, произвольные технические маркеры. То есть всё то, что не выражается как «найди объект МД», «найди процедуру», «найди реквизит». Для агента это ещё важнее: меньше ложных отрицаний и меньше перебора helper'ов вслепую.

    • Ищет текущее состояние на диске — включая незакоммиченные правки и новые untracked-файлы (--untracked); .gitignore'd файлы не ищутся намеренно. Никакой истории — только актуальные исходники.
    • mode='files'[{file}] (дешёвый обзор «в каких файлах», антишум на частом токене → затем drill-down); mode='lines'[{file, line, text}]. При превышении max_results последний элемент — {"_truncated": True, "shown": N}. На сбое (git недоступен/таймаут/невалидный фильтр) → [{"error": ...}] (а не []).
    • Композиция фильтров path+file_types через scoped-pathspec {path}/*.{ext} (без OR-утечки между типами). User-ввод path/file_types санитизируется (отклоняются pathspec-magic ://:(...), абсолютные пути, .., невалидные расширения — чтобы поиск не «убежал» к корню репозитория и не расширился молча).
    • safe_grep переведён на тот же бэкенд для литеральных паттернов под git: base-файлы ищутся одним вызовом git grep вместо пула Python-грепов (результат идентичен, но быстрее). Регэксп-паттерны остаются на Python re (git -E это POSIX ERE, не эквивалент Python re); файлы расширений — всегда Python-путь. Внешний контракт safe_grep неизменен: [{file, line, text}], без усечения и sentinel.
    • Полностью изолированная фича: ноль изменений схемы индекса, BUILDER_VERSION не менялся, перестройка индекса не требуется.
    • Кейвиэт CRLF: при regex=True якорь конца строки на CRLF-файлах требует [[:space:]]*$, а не $ (git ищет байты, а его POSIX ERE не трактует \r как возврат каретки). Литеральный поиск CRLF-прозрачен.
    • Новая env-переменная RLM_GIT_SEARCH_TIMEOUT (по умолчанию 30с) — см. docs/ENV_REFERENCE.md.
  • Стратегия rlm_start (slim и full) при доступном git добавляет блок развязки трёх поисковых интентов (по имени → search/find_*; в известном модуле → safe_grep; любая подстрока где угодно, вкл. XML → git_search) — против «колебаний» агента в выборе инструмента. rlm_help git_search документирует хелпер всегда (независимо от cwd сервера). Всего хелперов: 56 → 57.

Полный список изменений: CHANGELOG.md