Verify visible hello MCP run and add shared control lease
This commit is contained in:
@@ -8,10 +8,10 @@
|
||||
проверку C-карты, банки, события и владение точками. Один процесс MAME не
|
||||
загружает одновременно `mamebridge` и `sdbgbridge`.
|
||||
|
||||
Сейчас `MAME.HT/plugins/mamebridge` вместе с `src/mame_mcp.py` публикует 30
|
||||
raw-инструментов. Старый `src/mame_bridge.lua` использует тот же Python
|
||||
frontend, но обрабатывает только 16 команд и не отвечает при hard-stop.
|
||||
`toolchain/sdbg_mcp.py` публикует 16 C-инструментов через общую с DAP сессию.
|
||||
`MAME.HT/plugins/mamebridge` вместе с `src/mame_mcp.py` публикует 30
|
||||
raw-инструментов. Удалённый на этапе А `src/mame_bridge.lua` использовал тот
|
||||
же Python frontend, но обрабатывал только 16 команд и не отвечал при hard-stop.
|
||||
`toolchain/sdbg_mcp.py` публикует 18 C-инструментов через общую с DAP сессию.
|
||||
**Цель — покрыть возможности всех 30 raw-инструментов в C-сессии, а не
|
||||
механически скопировать имена и небезопасную семантику.** Полный raw MCP
|
||||
остаётся отдельным режимом для задач без C-пакета и других машин MAME.
|
||||
@@ -60,6 +60,20 @@ C-MCP, ограничения совместной работы с DAP и жив
|
||||
проверяемых ссылок на удалённый script в текущем способе запуска нет. До
|
||||
этого шага считать legacy устаревшим, но не удалённым.
|
||||
|
||||
**Статус А, 2026-09-17 — выполнено.** Сравнение Lua-dispatch показало 16/16
|
||||
общих команд. Последовательные MCP stdio-прогоны на MAME.HT проверили
|
||||
регистры, память, дизассемблирование, консоль, точки/watchpoints и
|
||||
resume/pause у legacy при running CPU и plugin при stop. На реальном `hello`
|
||||
plugin прошёл DSS→`main`, запись и восстановление `errno`, попадание в
|
||||
watchpoint, ввод `x` через `getchar()` и машинные шаги over/out. Старый
|
||||
frame notifier не смог обслужить запрос после service-stop в `main`, что
|
||||
подтвердило известное ограничение. Файл удалён из активного дерева MAME.HT;
|
||||
после удаления оба plugin-пробника повторно прошли. Повторный прогон `hello`
|
||||
с `-video soft -window` показал вывод программы и `Press any key to exit...`
|
||||
на снимке работающего экрана; затем `x` довёл PC до строки после `getchar()`.
|
||||
Пробник `tests/sdbg/run_raw_mcp_hello_probe.py` теперь по умолчанию использует
|
||||
видимое окно, а `--proof` сохраняет снимок вне временного каталога сессии.
|
||||
|
||||
## Б. Подготовить общую C-сессию к расширению
|
||||
|
||||
1. Ввести control lease между DAP и MCP для `continue`, `pause`, шагов,
|
||||
@@ -82,6 +96,21 @@ C-MCP, ограничения совместной работы с DAP и жив
|
||||
**Выход Б:** два MCP-клиента и DAP читают одну сессию; конкурентные мутации
|
||||
сериализованы, а потеря клиента не оставляет его точек или нажатых клавиш.
|
||||
|
||||
**Промежуточный статус Б, 2026-09-17.** В session server добавлен 30-секундный
|
||||
control lease: команды CPU и ввод принимаются от текущего владельца, чужие
|
||||
получают явный отказ. MCP предоставляет `claim_control`/`release_control` и
|
||||
продлевает lease фоновым heartbeat; DAP продлевает его при опросе событий и
|
||||
освобождает при disconnect. Каждый процесс session server выдаёт новый
|
||||
`session_id`. Unit-тест проверил конфликт, освобождение и истечение lease;
|
||||
живой DAP+MCP-прогон проверил передачу управления обратно VS Code и попадание
|
||||
в его точку. Сервер теперь также удаляет личные MCP-точки и отпускает
|
||||
удерживаемые клавиши после истечения heartbeat. Живой прогон с владельцем
|
||||
без heartbeat подтвердил событие `owner_expired`, удаление точки и отсутствие
|
||||
ложной остановки в `hello.c:62` после возобновления DAP.
|
||||
**Этап Б не закрыт:** ещё нужны защита
|
||||
всех мутаций, проверка session ID в каждом изменяющем запросе и безопасная
|
||||
invalidation при reset/load.
|
||||
|
||||
## В. Перенести 30 возможностей raw MCP по группам
|
||||
|
||||
| Raw-инструменты | Реализация в общей сессии и проверка |
|
||||
|
||||
Reference in New Issue
Block a user