v1.15.0
Добавлено
-
Полнотекстовый поиск по ВСЕМ файлам конфигурации через движок
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_filesBSL-файлов, а сырой.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-грепов (результат идентичен, но быстрее). Регэксп-паттерны остаются на Pythonre(git-Eэто POSIX ERE, не эквивалент Pythonre); файлы расширений — всегда 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.
- Ищет текущее состояние на диске — включая незакоммиченные правки и новые untracked-файлы (
-
Стратегия
rlm_start(slim и full) при доступном git добавляет блок развязки трёх поисковых интентов (по имени →search/find_*; в известном модуле →safe_grep; любая подстрока где угодно, вкл. XML →git_search) — против «колебаний» агента в выборе инструмента.rlm_help git_searchдокументирует хелпер всегда (независимо от cwd сервера). Всего хелперов: 56 → 57.
Полный список изменений: CHANGELOG.md