Голосовые системы

SPPI WebMCP: ошибка центровки, 6 ноября 2026

Подтверждённый результат

Мост Chat Agent → WebMCP SPPI работает. В установленной панели выполнен один контрольный запрос без изменения карты: pageTools.list() и Measure.GetActive. Сохранённый результат run_js содержит ok=true, measure=false и четыре инструмента: map.CenterOnGeoJsonFeature, map.SetCenter, Measure.GetActive, Measure.MeasureOnOff.

Сбой исходного запроса

  • Request: 445a702f-4268-5c79-ac61-e9eb62bdbfbb.
  • Session: 4f051baa-3791-443a-8362-63717683f53c.
  • Команда: «зацентрируйся на городе москва».
  • Первый вызов получил каталог. Второй вызвал map.CenterOnGeoJsonFeature с GeoJsonData: Feature / Point, координаты [37.6173, 55.7558].
  • Аргумент GeoJsonData соответствует опубликованной схеме инструмента.
  • Результат: browser_script_exception, effect=unknown, Cannot read properties of undefined (reading 'clear').
  • В Monitor сохранены вызов, результат и ошибка запроса. Это не тайм-аут истории.

Причина в опубликованном SPPI

Проверена фактически загруженная версия DEV-MASTER v1.0.24052 / 04.11.2026. В bundle карты, строка 1196 (нумерация с 1), метод MapService.CenterOnGeoJsonFeature сначала выполняет:

this.centerDataSource.clear();
this.centerDataSource = new VectorSource({ features: /* readFeatures */ });
this.CenterOnFeatures(this.centerDataSource.getFeatures());

На первом вызове centerDataSource ещё отсутствует. Инициализации до clear в загруженном классе нет. Исключение возникает до создания источника и центровки. Реестр SPPI вызывает метод как instance[method](#archive-availability), сохраняя this. Наш мост сохраняет moduleName/apiName из каталога и передаёт JSON-аргументы.

Минимальная правка на стороне SPPI: проверять существование прежнего источника перед clear (this.centerDataSource?.clear()), либо создавать его до использования. Окончательный вариант и тест первого/повторного вызова должны выполняться в исходном репозитории SPPI. Исходники и runtime карты в этой проверке не менялись.

Общий текст ошибки панели недостаточно конкретен: он скрывает за «результат не подтверждён» фактически полученное исключение. Точное сообщение доступно в «Ход выполнения» → второй run_js → «Получено от инструмента».

Границы проверки

Не повторял упавшую центровку и не вызывал изменяющие карту инструменты. Страницу не перезагружал, микрофон не переключал, настройки и сервисы не менял. Работоспособность map.SetCenter в этой проверке не устанавливалась.

Исходник

Скачать Markdown · К материалам исследования