Add shared-session MCP source debugger adapter

This commit is contained in:
Александр Петров
2026-09-16 20:43:50 +03:00
parent addc00a0f3
commit 9ad5a018a2
19 changed files with 740 additions and 22 deletions
+27
View File
@@ -279,12 +279,39 @@ Quick wins:
## Прочий backlog
- [ ] **Довести MCP C-уровня до полного безопасного контракта.** Первый
stdio-адаптер с 16 инструментами использует общую sdbg-сессию и
owner ID личных точек. Следующее: эксклюзивный control lease для
DAP/MCP, heartbeat/очистка точек при аварийном выходе MCP, безопасные
input/screenshot/console API через session server, затем доказанные
watchpoints, запись typed values, disassemble_src и batch-загрузка
точек. Raw `mame_mcp.py` с `-plugin mamebridge` или старым
`mame_bridge.lua` не подключать к тому же MAME в обход общей сессии.
Отдельно мигрировать raw `mame_mcp.py` с FastMCP SDK 1.x на MCPServer
SDK 2.x, если этот standalone-интерфейс сохраняется; сейчас окружения
raw и C-адаптера разделены.
Проверять конкуренцию, ошибки и lifecycle живым DAP/MCP
пробником; см. [sdbg-mcp.md](sdbg-mcp.md).
- [ ] **Несколько одновременных экземпляров MAME и MCP bridge (отдельная
задача, позже).** Проверить два изолированных процесса с разными
дискетами/CHD/state и двумя MCP-сессиями; в протоколе явно связывать
команду с PID/session ID, не допускать ответа от чужого процесса,
проверить сброс/exit и одновременные команды. До успешного end-to-end
теста параллельная работа MAME через MCP не гарантируется.
- [ ] **Финальная полировка: оградить ввод до запуска отлаживаемой программы.**
Проверить, можно ли не передавать в гостевой Sprinter физические
клавиатуру/мышь, пока MAME грузит DSS и launcher вводит команду запуска:
MAME может захватить фокус, а пользователь в это время печатает в другой
программе. По возможности до запуска EXE сохранить фокус на прежнем
приложении, чтобы оно продолжало получать ввод. Автоматический ввод
команды launcher должен оставаться рабочим. При переходе к исполнению
EXE сразу разрешить прямой ввод в MAME, в том числе для `getchar()`;
при Stop, ошибке запуска и restart корректно сбрасывать состояние.
Если MAME не умеет различать эти два
источника ввода, исследовать управление фокусом/захватом окна либо
узкий patch MAME; не блокировать ввод ценой поломки запуска.
Проверить ручное переключение окон, сохранение ввода в другом приложении
и ранние нажатия живым сценарием.
- [ ] factoring parse_argv из crt0/crt0_banked в общий argv.s
- [ ] `restore SP on EXIT` (паттерн z88dk +pps) — проверить нужность
- [x] ~~CI: MAME с -aviwrite для screenshot-сравнения без человека~~