feat(game): визуальный редактор графов диалогов
- tools/dialogue-editor/server.mjs — node http без зависимостей: статика,
  GET /api/graphs, GET/PUT /api/graph/<id> (mtime-гард 409, атомарная
  запись .tmp->rename, формат 4 пробела + \n), POST /api/dry-run,
  GET /api/registries
- валидация и dry-run — спавн vite-node tools/dialogues/probe.ts (stdin ->
  JSON), реестры — tools/dialogues/registries.ts: правила одни
  (dialogueRules.ts) для валидатора, CLI и редактора, дублирования нет
- UI (index.html/editor.js/editor.css, без CDN): список графов, SVG-канва
  с карточками и рёбрами (next — сплошные, choices — пунктир, сироты —
  красный пунктир), инспектор узла (текст/speaker/mood/tags/условия/
  setFlags/setVars/do[]/выборы), dry-run в панели
- npm run dialogues (порт 5199)
- проверено в Chromium: канва и инспектор, dry-run, правка + сохранение
  (422 на битом флаге, 409 на старом mtime, 200 при записи)
- доки: ui-and-dialogue.md, practices.md, llms.txt, CLAUDE.md

Co-Authored-By: Claude Code <noreply@anthropic.com>
1 parent a5f5426 commit 4b75cf7b1d6439a8040506cec16f6c142e6c8ef8
@root root authored 58 minutes ago
Showing 11 changed files
View
CLAUDE.md
View
apps/game/tools/dialogue-editor/editor.css 0 → 100644
View
apps/game/tools/dialogue-editor/editor.js 0 → 100644
View
apps/game/tools/dialogue-editor/index.html 0 → 100644
View
apps/game/tools/dialogue-editor/server.mjs 0 → 100644
View
apps/game/tools/dialogues/probe.ts 0 → 100644
View
apps/game/tools/dialogues/registries.ts 0 → 100644
View
docs/engine/practices.md
View
docs/engine/ui-and-dialogue.md
View
docs/llms.txt
View
package.json