@darkclaw921/umgt 0.0.0-stage → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +161 -2
- package/architecture.md +105 -0
- package/bin/lm-game-hub.js +7 -0
- package/dist/server/activity.d.ts +17 -0
- package/dist/server/activity.js +55 -0
- package/dist/server/activity.js.map +1 -0
- package/dist/server/agents/activity.d.ts +36 -0
- package/dist/server/agents/activity.js +117 -0
- package/dist/server/agents/activity.js.map +1 -0
- package/dist/server/agents/claude.d.ts +5 -0
- package/dist/server/agents/claude.js +107 -0
- package/dist/server/agents/claude.js.map +1 -0
- package/dist/server/agents/codex.d.ts +5 -0
- package/dist/server/agents/codex.js +128 -0
- package/dist/server/agents/codex.js.map +1 -0
- package/dist/server/agents/core-tools.d.ts +23 -0
- package/dist/server/agents/core-tools.js +298 -0
- package/dist/server/agents/core-tools.js.map +1 -0
- package/dist/server/agents/core.d.ts +9 -0
- package/dist/server/agents/core.js +106 -0
- package/dist/server/agents/core.js.map +1 -0
- package/dist/server/agents/index.d.ts +5 -0
- package/dist/server/agents/index.js +41 -0
- package/dist/server/agents/index.js.map +1 -0
- package/dist/server/agents/kimi.d.ts +5 -0
- package/dist/server/agents/kimi.js +123 -0
- package/dist/server/agents/kimi.js.map +1 -0
- package/dist/server/agents/rpc.d.ts +19 -0
- package/dist/server/agents/rpc.js +102 -0
- package/dist/server/agents/rpc.js.map +1 -0
- package/dist/server/agents/types.d.ts +51 -0
- package/dist/server/agents/types.js +7 -0
- package/dist/server/agents/types.js.map +1 -0
- package/dist/server/app.d.ts +21 -0
- package/dist/server/app.js +38 -0
- package/dist/server/app.js.map +1 -0
- package/dist/server/asset-catalog.d.ts +5 -0
- package/dist/server/asset-catalog.js +525 -0
- package/dist/server/asset-catalog.js.map +1 -0
- package/dist/server/asset-media.d.ts +16 -0
- package/dist/server/asset-media.js +170 -0
- package/dist/server/asset-media.js.map +1 -0
- package/dist/server/asset-selection.d.ts +71 -0
- package/dist/server/asset-selection.js +273 -0
- package/dist/server/asset-selection.js.map +1 -0
- package/dist/server/assets.d.ts +69 -0
- package/dist/server/assets.js +669 -0
- package/dist/server/assets.js.map +1 -0
- package/dist/server/browser-gateway.d.ts +82 -0
- package/dist/server/browser-gateway.js +285 -0
- package/dist/server/browser-gateway.js.map +1 -0
- package/dist/server/chat-computer.d.ts +13 -0
- package/dist/server/chat-computer.js +29 -0
- package/dist/server/chat-computer.js.map +1 -0
- package/dist/server/chat-games.d.ts +38 -0
- package/dist/server/chat-games.js +202 -0
- package/dist/server/chat-games.js.map +1 -0
- package/dist/server/chat.d.ts +42 -0
- package/dist/server/chat.js +318 -0
- package/dist/server/chat.js.map +1 -0
- package/dist/server/cli.d.ts +14 -0
- package/dist/server/cli.js +117 -0
- package/dist/server/cli.js.map +1 -0
- package/dist/server/core-client.d.ts +69 -0
- package/dist/server/core-client.js +357 -0
- package/dist/server/core-client.js.map +1 -0
- package/dist/server/directory-picker.d.ts +14 -0
- package/dist/server/directory-picker.js +113 -0
- package/dist/server/directory-picker.js.map +1 -0
- package/dist/server/engine.d.ts +36 -0
- package/dist/server/engine.js +507 -0
- package/dist/server/engine.js.map +1 -0
- package/dist/server/events.d.ts +12 -0
- package/dist/server/events.js +137 -0
- package/dist/server/events.js.map +1 -0
- package/dist/server/game-launch.d.ts +16 -0
- package/dist/server/game-launch.js +143 -0
- package/dist/server/game-launch.js.map +1 -0
- package/dist/server/html5.d.ts +9 -0
- package/dist/server/html5.js +107 -0
- package/dist/server/html5.js.map +1 -0
- package/dist/server/interview.d.ts +241 -0
- package/dist/server/interview.js +190 -0
- package/dist/server/interview.js.map +1 -0
- package/dist/server/mcp.d.ts +27 -0
- package/dist/server/mcp.js +91 -0
- package/dist/server/mcp.js.map +1 -0
- package/dist/server/plugins.d.ts +8 -0
- package/dist/server/plugins.js +144 -0
- package/dist/server/plugins.js.map +1 -0
- package/dist/server/process.d.ts +15 -0
- package/dist/server/process.js +89 -0
- package/dist/server/process.js.map +1 -0
- package/dist/server/publication-materials.d.ts +18 -0
- package/dist/server/publication-materials.js +104 -0
- package/dist/server/publication-materials.js.map +1 -0
- package/dist/server/publication-mcp.d.ts +3 -0
- package/dist/server/publication-mcp.js +43 -0
- package/dist/server/publication-mcp.js.map +1 -0
- package/dist/server/publication.d.ts +54 -0
- package/dist/server/publication.js +334 -0
- package/dist/server/publication.js.map +1 -0
- package/dist/server/push.d.ts +81 -0
- package/dist/server/push.js +122 -0
- package/dist/server/push.js.map +1 -0
- package/dist/server/reports.d.ts +4 -0
- package/dist/server/reports.js +40 -0
- package/dist/server/reports.js.map +1 -0
- package/dist/server/roblox-assets.d.ts +41 -0
- package/dist/server/roblox-assets.js +131 -0
- package/dist/server/roblox-assets.js.map +1 -0
- package/dist/server/roblox-connection.d.ts +54 -0
- package/dist/server/roblox-connection.js +331 -0
- package/dist/server/roblox-connection.js.map +1 -0
- package/dist/server/roblox-install.d.ts +4 -0
- package/dist/server/roblox-install.js +170 -0
- package/dist/server/roblox-install.js.map +1 -0
- package/dist/server/roblox-mcp.d.ts +2 -0
- package/dist/server/roblox-mcp.js +34 -0
- package/dist/server/roblox-mcp.js.map +1 -0
- package/dist/server/roblox-play.d.ts +23 -0
- package/dist/server/roblox-play.js +84 -0
- package/dist/server/roblox-play.js.map +1 -0
- package/dist/server/roblox-project-tools.d.ts +11 -0
- package/dist/server/roblox-project-tools.js +119 -0
- package/dist/server/roblox-project-tools.js.map +1 -0
- package/dist/server/roblox-setup.d.ts +37 -0
- package/dist/server/roblox-setup.js +206 -0
- package/dist/server/roblox-setup.js.map +1 -0
- package/dist/server/roblox-skills.d.ts +15 -0
- package/dist/server/roblox-skills.js +15 -0
- package/dist/server/roblox-skills.js.map +1 -0
- package/dist/server/roblox.d.ts +30 -0
- package/dist/server/roblox.js +248 -0
- package/dist/server/roblox.js.map +1 -0
- package/dist/server/routes.d.ts +11 -0
- package/dist/server/routes.js +223 -0
- package/dist/server/routes.js.map +1 -0
- package/dist/server/security.d.ts +4 -0
- package/dist/server/security.js +64 -0
- package/dist/server/security.js.map +1 -0
- package/dist/server/skills.d.ts +4 -0
- package/dist/server/skills.js +123 -0
- package/dist/server/skills.js.map +1 -0
- package/dist/server/store.d.ts +25 -0
- package/dist/server/store.js +89 -0
- package/dist/server/store.js.map +1 -0
- package/dist/server/templates/roblox-coin-run.d.ts +2 -0
- package/dist/server/templates/roblox-coin-run.js +326 -0
- package/dist/server/templates/roblox-coin-run.js.map +1 -0
- package/dist/server/templates/roblox-skills.json +55 -0
- package/dist/server/templates/yandex-sdk.d.ts +3 -0
- package/dist/server/templates/yandex-sdk.js +177 -0
- package/dist/server/templates/yandex-sdk.js.map +1 -0
- package/dist/server/updates.d.ts +28 -0
- package/dist/server/updates.js +99 -0
- package/dist/server/updates.js.map +1 -0
- package/dist/server/video-media.d.ts +47 -0
- package/dist/server/video-media.js +224 -0
- package/dist/server/video-media.js.map +1 -0
- package/dist/server/video-routes.d.ts +7 -0
- package/dist/server/video-routes.js +91 -0
- package/dist/server/video-routes.js.map +1 -0
- package/dist/server/video.d.ts +214 -0
- package/dist/server/video.js +301 -0
- package/dist/server/video.js.map +1 -0
- package/dist/server/web-build.d.ts +16 -0
- package/dist/server/web-build.js +232 -0
- package/dist/server/web-build.js.map +1 -0
- package/dist/server/workflow.d.ts +221 -0
- package/dist/server/workflow.js +826 -0
- package/dist/server/workflow.js.map +1 -0
- package/dist/server/yandex-config.d.ts +33 -0
- package/dist/server/yandex-config.js +12 -0
- package/dist/server/yandex-config.js.map +1 -0
- package/dist/server/yandex-godot.d.ts +5 -0
- package/dist/server/yandex-godot.js +107 -0
- package/dist/server/yandex-godot.js.map +1 -0
- package/dist/shared/aspects.d.ts +48 -0
- package/dist/shared/aspects.js +22 -0
- package/dist/shared/aspects.js.map +1 -0
- package/dist/shared/assistant.d.ts +7 -0
- package/dist/shared/assistant.js +36 -0
- package/dist/shared/assistant.js.map +1 -0
- package/dist/shared/chat.d.ts +46 -0
- package/dist/shared/chat.js +2 -0
- package/dist/shared/chat.js.map +1 -0
- package/dist/shared/settings.d.ts +11 -0
- package/dist/shared/settings.js +25 -0
- package/dist/shared/settings.js.map +1 -0
- package/dist/shared/types.d.ts +510 -0
- package/dist/shared/types.js +2 -0
- package/dist/shared/types.js.map +1 -0
- package/dist/web/apple-touch-icon.png +0 -0
- package/dist/web/assets/AgentActivity-sYJeY5Yf.js +9 -0
- package/dist/web/assets/ArrowRight.es-9w41WqD8.js +1 -0
- package/dist/web/assets/ArrowUpRight.es-BmIrpjWN.js +1 -0
- package/dist/web/assets/AssetMediaPreview-D2cd6oQO.js +1 -0
- package/dist/web/assets/AssetSelectionWizard-a43_6NO7.js +1 -0
- package/dist/web/assets/CaretDown.es-Cq33NYip.js +1 -0
- package/dist/web/assets/CheckCircle.es-D5B3hdvz.js +1 -0
- package/dist/web/assets/CoreAccount-D4ZC8CWv.js +1 -0
- package/dist/web/assets/DownloadSimple.es-DwOWFbs2.js +1 -0
- package/dist/web/assets/FileText.es-D83IIiOG.js +1 -0
- package/dist/web/assets/ImageSquare.es-DxCFt99_.js +1 -0
- package/dist/web/assets/KidsApp-BXWaALoK.css +1 -0
- package/dist/web/assets/KidsApp-D-8t3HPy.js +2 -0
- package/dist/web/assets/MagnifyingGlass.es-rkdOU2rH.js +1 -0
- package/dist/web/assets/PaperPlaneRight.es-U0twumpP.js +1 -0
- package/dist/web/assets/PencilSimple.es-JVHwRvGx.js +1 -0
- package/dist/web/assets/PlainChat-BC4K_tmj.css +1 -0
- package/dist/web/assets/PlainChat-CMxYwKko.js +1 -0
- package/dist/web/assets/Sparkle.es-CmGpvnNm.js +1 -0
- package/dist/web/assets/Square.es-BjNN9Ypc.js +1 -0
- package/dist/web/assets/UploadSimple.es-DxIuxpCC.js +1 -0
- package/dist/web/assets/WarningCircle.es-D63H8cL9.js +1 -0
- package/dist/web/assets/WorkflowJournal-Did0sRta.js +1 -0
- package/dist/web/assets/YandexConfigFields-DDL22Bfw.js +1 -0
- package/dist/web/assets/YandexGamesView-R64RSJRL.js +2 -0
- package/dist/web/assets/bg-build-DIalyCDw.svg +3 -0
- package/dist/web/assets/bg-idea-DHcE-Dhs.svg +3 -0
- package/dist/web/assets/bg-materials-UDVFaueI.svg +3 -0
- package/dist/web/assets/bg-plan-DpfwIsqJ.svg +3 -0
- package/dist/web/assets/bg-play-CNc1QZFK.svg +3 -0
- package/dist/web/assets/dist-7vx7MTaJ.js +1 -0
- package/dist/web/assets/index-Izzbh11U.css +1 -0
- package/dist/web/assets/index-sNciOZYG.js +13 -0
- package/dist/web/assets/jsx-runtime-CdVFa8IP.js +1 -0
- package/dist/web/assets/manrope-cyrillic-wght-normal-Dvxsihut.woff2 +0 -0
- package/dist/web/assets/manrope-greek-wght-normal-DL7QRZyv.woff2 +0 -0
- package/dist/web/assets/manrope-latin-ext-wght-normal-Ch3YOpNY.woff2 +0 -0
- package/dist/web/assets/manrope-latin-wght-normal-DHIcAJRg.woff2 +0 -0
- package/dist/web/assets/manrope-vietnamese-wght-normal-usUDDRr7.woff2 +0 -0
- package/dist/web/assets/resources-DppXCagL.js +1 -0
- package/dist/web/assets/robot-happy-B6YvlU94.svg +24 -0
- package/dist/web/assets/robot-hello-CCsQgsS-.svg +24 -0
- package/dist/web/assets/robot-listen-Buuz9xII.svg +24 -0
- package/dist/web/assets/robot-sad-CRtiNVWs.svg +24 -0
- package/dist/web/assets/robot-think-CJ5fDBTm.svg +24 -0
- package/dist/web/assets/star-big-CSFDKjws.svg +22 -0
- package/dist/web/assets/star-empty-CC-5vioJ.svg +3 -0
- package/dist/web/assets/star-next-ztuDjOHU.svg +9 -0
- package/dist/web/assets/star-on-l_krO3aV.svg +10 -0
- package/dist/web/assets/ui-wHE_yBK0.js +41 -0
- package/dist/web/assets/umgt-logo-DAOkTN9u.png +0 -0
- package/dist/web/assets/unbounded-cyrillic-wght-normal-C627f1f8.woff2 +0 -0
- package/dist/web/assets/unbounded-latin-ext-wght-normal-D6H-S6MW.woff2 +0 -0
- package/dist/web/assets/unbounded-latin-wght-normal-D5afBTBx.woff2 +0 -0
- package/dist/web/assets/unbounded-vietnamese-wght-normal-rat7GD3o.woff2 +0 -0
- package/dist/web/assets/workflow-BhcU9uvG.css +1 -0
- package/dist/web/assets/workflow-BrIKN5ER.js +34 -0
- package/dist/web/favicon.ico +0 -0
- package/dist/web/icons/favicon-16.png +0 -0
- package/dist/web/icons/favicon-32.png +0 -0
- package/dist/web/icons/icon-192.png +0 -0
- package/dist/web/icons/icon-512.png +0 -0
- package/dist/web/icons/maskable-192.png +0 -0
- package/dist/web/icons/maskable-512.png +0 -0
- package/dist/web/index.html +28 -0
- package/dist/web/manifest.webmanifest +19 -0
- package/dist/web/sw.js +25 -0
- package/docs/agent-activity-ui.md +33 -0
- package/docs/agent-activity.md +43 -0
- package/docs/agent-permissions-ui.md +15 -0
- package/docs/api.md +145 -0
- package/docs/approval-journal.md +13 -0
- package/docs/asset-media.md +27 -0
- package/docs/asset-providers.md +34 -0
- package/docs/asset-selection.md +31 -0
- package/docs/automatic-approvals.md +15 -0
- package/docs/background-game-launch.md +17 -0
- package/docs/billing-validation.md +23 -0
- package/docs/core-isolation.md +37 -0
- package/docs/core.md +45 -0
- package/docs/generated-text-ui.md +41 -0
- package/docs/interactive-interview-ui.md +29 -0
- package/docs/interactive-interview.md +52 -0
- package/docs/local-codex.md +51 -0
- package/docs/local-meshy.md +13 -0
- package/docs/markdown.md +11 -0
- package/docs/permission-ui.md +11 -0
- package/docs/plan.md +47 -0
- package/docs/remote-core-deployment.md +47 -0
- package/docs/roblox.md +90 -0
- package/docs/validation.md +228 -0
- package/docs/video-reference.md +35 -0
- package/docs/workflow-journal-ui.md +21 -0
- package/docs/yandex-foundation.md +27 -0
- package/docs/yandex-games.md +45 -0
- package/package.json +95 -4
- package/scripts/create-roblox-demo.mjs +31 -0
- package/scripts/diagnose-roblox-mcp.mjs +45 -0
- package/scripts/open-hub-chrome.mjs +60 -0
- package/scripts/smoke-agent.mjs +91 -0
package/docs/roblox.md
ADDED
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
# Roblox Studio в Game Hub
|
|
2
|
+
|
|
3
|
+
Hub поддерживает создание, планирование, выполнение задач, навыки, локальную проверку упаковки, сборку place и открытие Roblox Studio. Выбирайте движок `roblox`, измерение `3d`, платформы `["roblox"]`. HTML5/Godot сохраняют прежние платформы; Roblox нельзя экспортировать как Web или Яндекс Игры.
|
|
4
|
+
|
|
5
|
+
## Структура и сборка
|
|
6
|
+
|
|
7
|
+
- `default.project.json`: дерево Roblox DataModel в формате проекта Rojo.
|
|
8
|
+
- `src/server/*.server.luau`: серверные Script в ServerScriptService.
|
|
9
|
+
- `src/client/*.client.luau`: LocalScript в StarterPlayerScripts.
|
|
10
|
+
- `src/shared/*.luau`: ModuleScript в ReplicatedStorage.Shared.
|
|
11
|
+
- `builds/game.rbxlx`: локальный place, который открывается в Studio.
|
|
12
|
+
- `.agents/skills` и `.claude/skills`: навыки, справочники и MIT-лицензия.
|
|
13
|
+
|
|
14
|
+
Исходники на диске являются основной версией проекта. Сборка атомарно заменяет `builds/game.rbxlx`; правки только внутри этого файла будут потеряны при следующей сборке. В Studio сохраняйте ручные эксперименты отдельно и переносите нужные правки в исходники. Hub не изменяет глобальную конфигурацию Codex или Claude и не публикует игру.
|
|
15
|
+
|
|
16
|
+
Встроенный сборщик не требует Rojo, сети или стороннего плагина. На верхнем уровне manifest поддерживаются только name и tree. Поддерживает явные `$className`, `$path` для каталогов и Luau-файлов, вложенные узлы и `$properties`. Сопоставленный с классом `$path` должен быть каталогом. Поддерживаются `.lua` и `.luau`, суффиксы `.server`/`.client`, обычные папки; `init.lua`, `.model.json`, `.meta.json`, модели `.rbxm`, terrain, attributes, enum-строки и другие расширения Rojo не поддерживаются. Не используйте init.lua для объединения папки: он обрабатывается как обычный ModuleScript. Неподдерживаемые ключи/файлы/свойства возвращают ошибку вместо потери данных. Пути с traversal и symlink отвергаются.
|
|
17
|
+
|
|
18
|
+
Поддерживаемые свойства: boolean Anchored, CanCollide, CanTouch, CanQuery, Neutral, Enabled, Disabled, ResetOnSpawn; numeric Transparency, Reflectance, Brightness, Gravity, WalkSpeed, JumpPower, ClockTime; Vector3 Size и Position как массивы из трёх чисел; Color, Ambient, OutdoorAmbient как массивы RGB в 0…1; numeric enum values Shape, Material, Technology; string Text и Value. Проверяется форма значения, а совместимость произвольного свойства с конкретным классом необходимо проверять в Studio. Position сериализуется через CFrame, Size через size и Color через Color3uint8, согласно сохранённому формату Roblox.
|
|
19
|
+
|
|
20
|
+
Для полноценной сериализации сложных сцен используйте установленный [Rojo](https://rojo.space/docs/v7/project-format/) отдельно: `rojo build default.project.json -o builds/game.rbxlx`. Нативный сборщик Hub предназначен для стартовых проектов с ограниченным manifest. Перед его использованием не добавляйте неподдерживаемые возможности.
|
|
21
|
+
|
|
22
|
+
«Проверить проект» проверяет JSON, пути, структуру и создаёт `.rbxlx`. Успешный результат означает успешную упаковку. **Он не означает успешную компиляцию Luau, typecheck или игровой тест.** «Открыть Roblox Studio» (`engine/editor`) запускает автоматическую настройку. Уже открытый place с проверенным идентификатором повторно не открывается и не пересобирается; новый place собирается из исходников и передаётся Studio. Открытие редактора не запускает Play. Кнопка сборки возвращает локальный путь без web preview.
|
|
23
|
+
|
|
24
|
+
**«Запустить игру»** (`POST /api/v1/projects/:id/engine/run`) запускает настоящий Play через подключённую StudioMCP: проверяет маркер проекта, схемы `get_studio_state` и `start_stop_play`, отправляет `is_start: true` в выбранное окно и ждёт подтверждения `Current Studio Mode: Play`. Запуск сохраняет текущую открытую сцену и несохранённые правки, не собирает и не открывает place заново. Если Studio ещё не подключена, сначала откройте её и завершите настройку. Повторный запуск уже работающего Play ничего не перезапускает.
|
|
25
|
+
|
|
26
|
+
**«Остановить»** (`POST /api/v1/projects/:id/engine/stop`) отправляет `is_start: false` и возвращает успех только после подтверждения Edit. Нажатие во время запуска ставит остановку в очередь после команды запуска. `GET /api/v1/projects/:id/engine/state` возвращает текущее состояние игры; интерфейс повторно проверяет его после загрузки и во время работы, поэтому ручная остановка в Studio тоже отражается в Hub. Ошибки команды, неподдерживаемые схемы, таймаут подтверждения, смена place и неоднозначный выбор окна видимы в интерфейсе и журнале. Подтверждение Play означает запуск режима игры, а проверка геймплея остаётся отдельным игровым тестом.
|
|
27
|
+
|
|
28
|
+
## Встроенный StudioMCP
|
|
29
|
+
|
|
30
|
+
[Официальная инструкция Roblox](https://create.roblox.com/docs/studio/mcp): в Studio откройте Assistant → … → Manage MCP Servers → Enable Studio as MCP server.
|
|
31
|
+
|
|
32
|
+
Нажмите **«Открыть Roblox Studio»** или **«Настроить автоматически»** в панели проекта. Ручные Studio ID, установка плагина, Rojo и редактирование конфигурации MCP-клиента не нужны.
|
|
33
|
+
|
|
34
|
+
Автоматическая настройка:
|
|
35
|
+
|
|
36
|
+
1. Обнаруживает Studio в `/Applications`, `~/Applications` или Windows `LOCALAPPDATA/Roblox/Versions`; пользовательские пути остаются в дополнительных настройках.
|
|
37
|
+
2. Если Studio отсутствует, загружает её с официального Roblox CDN. На macOS получает актуальную версию, скачивает ZIP для архитектуры компьютера, проверяет подпись Roblox и устанавливает в `~/Applications` без sudo и Homebrew. На Windows проверяет Authenticode официального установщика и запускает его. Системные подтверждения выполняет пользователь. Повторная установка уже найденной Studio не выполняется; существующие bundles не заменяются.
|
|
38
|
+
3. Собирает place с `ReplicatedStorage.LMGameHubProject`, открывает Studio и проверяет MCP initialize, список инструментов и окон. Первоначально прокси может предоставить только список окон или пустой список инструментов; Hub сохраняет соединение, ждёт регистрации окна и повторно получает инструменты. Если проверенный place уже открыт, сохраняет его текущее состояние. При неизвестной схеме MCP автоматическая настройка останавливается без пересборки и повторного открытия сцены.
|
|
39
|
+
4. По точному значению идентификатора находит единственное окно проекта. Одинаковые имена игр не считаются доказательством. Две копии одного проекта требуют закрыть лишнюю; случайный чужой place не получает изменений.
|
|
40
|
+
5. Передаёт агенту подключение через Hub только при успешной проверке. Каждая команда повторно получает инструменты, проверяет идентификатор и принудительно задаёт текущий studio_id. Инструменты, схема которых не поддерживает явный studio_id, исключаются. Переключение окна на другой place блокирует следующую команду. MCP доступен только при активном выполнении задач; опрос и планирование его не получают. `upload_image` и автономный `subagent` не передаются. Публикация запрещена инструкцией агента.
|
|
41
|
+
|
|
42
|
+
Первый запуск требует войти в аккаунт Roblox и включить **Assistant → … → Manage MCP Servers → Enable Studio as MCP server**. Roblox не документирует API автоматического включения этого переключателя; Hub не переписывает приватные настройки, авторизацию или permissions CLI. После этого нажмите **«Проверить подключение»** — Hub определит Studio ID сам. [Официальная схема MCP](https://create.roblox.com/docs/studio/mcp) и [установка Studio](https://create.roblox.com/docs/studio/setup).
|
|
43
|
+
|
|
44
|
+
Панель показывает прогресс загрузки/установки/открытия/подключения и конкретную причину отказа: сеть, подпись установщика, отсутствие MCP в старой Studio, таймаут, запрет сокетов, чужой place или две копии проекта. Статус «Подключён» появляется после реального MCP-ответа и проверки проекта. Если в старой Studio нет MCP, сохраните игру и выполните штатное обновление Studio; Hub не закрывает чужие окна и не заменяет работающий редактор. Linux поддерживает упаковку проекта; Roblox Studio для него не выпускается.
|
|
45
|
+
|
|
46
|
+
Сообщение «ни одно окно Studio не подключено» означает, что stdio-прокси запущен, но окно ещё не зарегистрировалось. Включите MCP в открытой Studio и повторите проверку: Hub использует уже запущенный прокси. Отсутствие инструментов в первом ответе само по себе не означает устаревшую Studio. Для диагностики используйте `node scripts/diagnose-roblox-mcp.mjs` (необязательный аргумент — путь к StudioMCP). Скрипт выводит только имена инструментов, формы их параметров и число окон в четырёх последовательных ответах; ключи, содержимое сцены и логи не читает, Luau не запускает.
|
|
47
|
+
|
|
48
|
+
Настройка из терминала для зарегистрированного проекта:
|
|
49
|
+
|
|
50
|
+
```sh
|
|
51
|
+
npm start -- setup-roblox --project examples/roblox-coin-run --data-dir .artifacts/roblox/demo-hub
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
Команда показывает этапы и JSON результата; ненулевой код означает, что настройка не завершена. `doctor` теперь отдельно проверяет Studio и реальное MCP-подключение. API проекта: `GET /roblox/setup` — статус, `POST /roblox/setup` — настройка, `POST /roblox/check` — повторная проверка. MCP bridge использует отдельный project-scoped capability; глобальные CLI-конфиги не изменяются. Устаревшее поле robloxStudioId больше не выбирает окно агента.
|
|
55
|
+
|
|
56
|
+
Исходники и place синхронизируются сборкой, а не непрерывно. Правки Luau на диске не появляются в уже открытой Studio автоматически: сохраните нужные ручные правки, закройте старый place и повторите «Открыть Roblox Studio». Для непрерывной синхронизации используйте Rojo отдельно и сохраните маркер проекта в manifest. Изменения только в Studio не заменяют исходники.
|
|
57
|
+
|
|
58
|
+
Агент должен получить состояние нужного окна, запускать Play, проверять Output и реальные состояния, выполнять сценарий движения/прыжка/сбора, затем останавливать Play. Изменения в Play не заменяют правки исходников. Если MCP не отвечает или UI недоступен, результат gameplay остаётся непроверенным.
|
|
59
|
+
|
|
60
|
+
## Источники skills
|
|
61
|
+
|
|
62
|
+
Набор [EL4CTEO/roblox-skills](https://github.com/EL4CTEO/roblox-skills) лицензирован MIT. В Hub сохранена ревизия `11571e0622bb96c0d469e5c688bed7017c6b5cda`: 23 SKILL.md и 25 reference-файлов. Файлы получены через GitHub connector, включены в `src/server/templates/roblox-skills.json` и компилируются в пакет Hub. Скачанные скрипты/установщики не выполнялись. Файлы ставятся в проект без сети; версия, источник, лицензия и ссылка фиксируются в extensions-lock.json. Навыки доступны агенту на следующем запуске задачи после создания/установки.
|
|
63
|
+
|
|
64
|
+
Все области набора: Luau, архитектура, networking, security, code review, DataStores, monetization, analytics/liveops, Open Cloud, игровые системы, персонажи/анимации, NPC AI, physics, input, UI, audio, world building, text chat, performance, teleport/matchmaking, tooling, testing и Studio MCP. Для монеточного прототипа используются Luau, архитектура, персонажи, physics, input, UI, security, testing и MCP; остальные доступны для последующего развития.
|
|
65
|
+
|
|
66
|
+
Также найдены [zilibobi/roblox-skills](https://github.com/zilibobi/roblox-skills) (поиск по официальной creator-docs) и [AshExplained/roblox-skills](https://github.com/AshExplained/roblox-skills) (широкий lifecycle). Они не включены в пакет: основной набор уже покрывает разработку, а официальные docs доступны через StudioMCP/http_get и Context7. Интернет-подбор не является утверждением, что перечислены все существующие skills.
|
|
67
|
+
|
|
68
|
+
## Прототип Coin Run
|
|
69
|
+
|
|
70
|
+
`npm run build && npm run demo:roblox` создаёт новый `examples/roblox-coin-run` и регистрирует его в отдельной локальной базе `.artifacts/roblox/demo-hub`. Существующая папка не перезаписывается. `npm run demo:roblox -- --rebuild` пересобирает сохранённые исходники. Откройте demo в Hub через `npm start -- --data-dir .artifacts/roblox/demo-hub` или откройте `.rbxlx` непосредственно в Studio.
|
|
71
|
+
|
|
72
|
+
Бег/прыжок используют стандартные Roblox controls, WalkSpeed 22 и JumpPower 55. 20 монет, 10 прыжковых платформ, низкие препятствия, checkpoint и финиш. Сервер проверяет персонажа, расстояние и состояние монеты для конкретного игрока и начисляет каждую монету один раз без yield между проверкой и обновлением. Клиент показывает счётчик и скрывает/вращает собственные собранные монеты. Прогресс сохраняется при возрождении, но не между Play-сессиями; DataStore и покупки отсутствуют. Для победы нужны все 20 монет и касание финиша.
|
|
73
|
+
|
|
74
|
+
Проверка в Studio: нажмите Play, убедитесь в Output `COIN_RUN_READY`; двигайтесь WASD/стрелками, прыгайте Space, собирайте монеты и наблюдайте прирост счётчика. Повторное касание не должно давать очки. Проверьте checkpoint после Reset Character и финиш при 20/20. На телефоне используются стандартные джойстик и кнопка прыжка. Две клиентские сессии должны иметь независимые счётчики.
|
|
75
|
+
|
|
76
|
+
## Creator Store и подбор по плану
|
|
77
|
+
|
|
78
|
+
В Roblox-проектах каталог и мастер подбора используют одну проектную Studio MCP-сессию: бесплатные Model и Audio из Creator Store. Уже импортированные ресурсы доступны в мастере; повторное подтверждение переиспользует их квитанции без вставки дубликатов. Импорт сохраняет геометрию и Sound в `default.project.json`, источник и условия — в `assets/roblox-<id>/asset.json` и `CREDITS.txt`. Эти ресурсы используют условия Roblox, а не CC0. Встроенный сборщик поддерживает MeshId/TextureID/SoundId, CFrame, SpecialMesh, Volume и Looped.
|
|
79
|
+
|
|
80
|
+
После запуска Hub статус MCP проверяется по маркеру открытого place; после открытия новой сцены настройка ждёт её до 30 секунд. Длительные Luau-проверки допускают 90 секунд с отменой; прокси агента ждёт ответ до 120 секунд.
|
|
81
|
+
|
|
82
|
+
Новая проверенная игра находится в `/Users/igorgerasimov/codexWorkspace/games/game_roblox`: 20 платформ и монет, чекпоинт, серверная победа, русский HUD, подтверждённый рестарт и музыка. Ранние артефакты `.artifacts/roblox/ui-game-*` относятся к предварительной диагностике. Доказательства проверки именно агентом платформы сохраняются в каталоге `reports` игрового проекта, включая `single-player-play` и `automated-scenarios`. В этой сессии Studio MCP работает; прежние отчёты о блокировке относятся к более ранним запускам. Публикация не выполнялась.
|
|
83
|
+
|
|
84
|
+
## Команды платформы для агента
|
|
85
|
+
|
|
86
|
+
В активной задаче `Roblox_Studio.hub_build` собирает текущие файлы через встроенный сборщик Hub. `Roblox_Studio.hub_sync_scripts` собирает их и синхронизирует Luau с подтверждённым place в режиме Edit, сохраняя прежние скрипты в `.lm-game-hub/studio-backups`. `Roblox_Studio.hub_open_build` передаёт сборку установленной Studio и повторно проверяет маркер; команда может сфокусировать уже открытое место, поэтому агент отдельно сверяет загруженные исходники и свойства ассетов с артефактом. Затем агент запускает Play, посылает ввод и проверяет состояние через тот же проектный мост. Отдельный запуск StudioMCP из терминала не нужен.
|
|
87
|
+
|
|
88
|
+
`lm-assets` использует тот же сервис поиска/импорта Creator Store, что и каталог и мастер подбора. Доступ к изменяющим инструментам сохраняется в состоянии «Завершаем задачу…» после Паузы и отзывается после завершения/остановки задачи.
|
|
89
|
+
|
|
90
|
+
Незавершённую задачу можно раскрыть и изменить через «Изменить задачу», пока очередь остановлена. Сохраняются прежние критерии и причина изменения; задача возвращается в очередь и требует новых доказательств. Недоступные ручные или сетевые проверки явно отражаются в отчёте ограничений, а не считаются пройденными.
|
|
@@ -0,0 +1,228 @@
|
|
|
1
|
+
# Проверка версии 0.1.0
|
|
2
|
+
|
|
3
|
+
Основная версия проверена 6 октября 2026, дополнения Codex/activity — 7 октября, интерактивное интервью и анимация текста — 8 октября на macOS, Node.js 26.0.0 и установленном Godot 4.7.2 Steam. Проверки Windows/Linux настроены в CI; удалённый CI в этой сессии не запускался.
|
|
4
|
+
|
|
5
|
+
## Финальные автоматические проверки
|
|
6
|
+
|
|
7
|
+
| Команда | Результат |
|
|
8
|
+
| --- | --- |
|
|
9
|
+
| `npm run typecheck` | Без ошибок TypeScript |
|
|
10
|
+
| `npm run build` | Сервер и production UI собраны |
|
|
11
|
+
| `npm test` | 222 теста в 24 файлах проходят; финальный прогон 8 октября — 24,86 с |
|
|
12
|
+
| `npm run test:e2e` | Все 15 сценариев Playwright проходят; финальный прогон 8 октября — 50,7 с |
|
|
13
|
+
| `npm run test:package` | Финальная проверка 8 октября установленного пакета прошла: CLI, собранный HTML и авторизованный API |
|
|
14
|
+
| `npm run doctor` | Обнаружены Godot 4.7.2, Codex 0.160.1 и Kimi 2.1.1; отсутствие Claude показано явно |
|
|
15
|
+
| `arhit arch build && arhit analyze` | Граф и зависимости обновлены |
|
|
16
|
+
|
|
17
|
+
Vitest проверяет SQLite и восстановление событий, защиту API, дочерние процессы, протоколы агентов, состояния планов/задач, ограничения ассетов, плагины и MCP. Добавлены регрессии SSE с большой сохранённой историей, backpressure, восстановлением по Last-Event-ID, очисткой ресурсов и отзывчивостью HTTP, а также форматирование и безопасность Markdown. Проверки Godot на этой машине выполнялись настоящим движком, включая 2D/3D проекты, пути с пробелами и кириллицей и отклонение повреждённого GDScript.
|
|
18
|
+
|
|
19
|
+
Playwright проверяет создание и сохранение проекта, обмен токена на сессию, отклонение чужого Origin, темы и мобильный экран, утверждение плана с автоматическим выполнением задач, импорт файла и прикрепление ресурса к задаче. Мастер проекта выбирает папку через endpoint диалога, отображает путь только для чтения, сохраняет выбор при отмене и показывает ожидание/ошибки. В тестах внешний системный диалог и платная модель заменяются инъецируемыми адаптерами; сервер, файлы, SQLite и доступные проверки Godot остаются настоящими. Сетевой каталог в сценарии прикрепления ассета заменяется фиксированной карточкой Kenney.
|
|
20
|
+
|
|
21
|
+
## Дополнительные проверки реальных интеграций
|
|
22
|
+
|
|
23
|
+
- **Codex:** авторизация и протокол app-server, запрос без записи, создание плана, затем полный цикл утверждение → декомпозиция → реализация простой игры-счётчика → headless-проверка поведения → независимые проверки Hub. Задача завершилась успешно.
|
|
24
|
+
- **Kimi:** ACP, запрос без записи и интерактивное интервью. Отдельная проверка генерации большого плана достигла лимита времени проверочного сценария; её успешное завершение не подтверждено.
|
|
25
|
+
- **Claude Code:** адаптер и SDK проверены автоматическими тестами. Настоящий CLI на машине отсутствует, поэтому живой вызов не проверялся.
|
|
26
|
+
- **Poly Haven:** реальный поиск, метаданные и импорт `wooden_table_02` с glTF, бинарными данными и текстурами, всего 5 файлов.
|
|
27
|
+
- **ambientCG:** реальный API и импорт текстур `Wood096`, всего 6 файлов.
|
|
28
|
+
- **GUT:** загрузка закреплённой версии 9.6.1 с проверкой SHA-256, установка и настоящий Godot headless import прошли.
|
|
29
|
+
- **Выбор папки:** 9 профильных тестов проверяют команды macOS/Windows/Linux, отмену, ошибки, проверку путей, защиту API и один активный диалог. AppleScript с настоящим `choose folder` успешно скомпилирован системным `osacompile`. При живом проходе через browser-use пользователь выбрал папку в настоящем системном диалоге; UI успешно создал отдельный проект Star Counter. Атрибут `readonly` поля пути проверен в настоящем DOM. Проверка через расширение Chrome остаётся отдельным ограниченным сценарием.
|
|
30
|
+
|
|
31
|
+
Для повторения полного вызова агента после сборки: `npm run smoke:agent -- codex`. Эта команда использует авторизованный CLI и расходует его обычную подписку. Созданная игра временная; при сбое сохраняются диагностические файлы. Отчёты сохраняются отдельно от очищаемой Playwright папки в `.artifacts/live-smoke`.
|
|
32
|
+
|
|
33
|
+
При текущем живом проходе найден отдельный дефект проверки GUT: запуск внутреннего `addons/gut/version_numbers.gd` как самостоятельного `--script --check-only` на Godot 4.7.2 воспроизводит `SCRIPT ERROR` в статической инициализации `utils.gd:206`, хотя полный импорт и обычный запуск проекта проходят. Это подтверждено на временной копии установленного GUT 9.6.1 без изменений исходной игры. Стратегия Hub исправлена: standalone-проверка исключает только корневой `res://addons`; полный editor import, проверки проектных скриптов и запуск остаются строгими. Временная копия GUT проходит исправленный `verifyProject`. Все 15 профильных engine/assets тестов, typecheck и build прошли; новые тесты воспроизводят циклическую загрузку и подтверждают обнаружение настоящих ошибок импортируемого плагина, транзитивной зависимости и runtime. Неиспользуемые или отключённые addon-файлы по отдельности не исполняются и требуют собственных тестов плагина.
|
|
34
|
+
|
|
35
|
+
После перезапуска исправленного Hub настоящая кнопка «Проверить проект» успешно выполнила Godot на игре с сохранённым кодом Task 1 и исходным сторонним GUT. В журнале зафиксировано `engine.completed` для операции `56c21134…` с `ok:true`, `cancelled:false`; снимок — `skill-engine-verified.png`. Эта независимая UI-проверка и проверка временной копии исходного GUT прошли **до** последующей локальной правки addon-файла агентом и отдельно подтверждают исправление стратегии Hub.
|
|
36
|
+
|
|
37
|
+
Во время повторной приёмки Codex сохранил контекст прежнего ложного сбоя и заменил два вызова `GutUtils.nvl` в `addons/gut/version_numbers.gd` тестового игрового проекта равнозначными условными выражениями. Это изменение только локального тестового проекта: пакет приложения, закреплённый источник GUT и его lock не изменены. Поэтому GUT в итоговом игровом проекте после retry не описывается как неизменённый. Повторная приёмка Task 1 завершилась успешно вместе с независимой проверкой Hub; `lmgh-coj` закрыта.
|
|
38
|
+
|
|
39
|
+
## Практические ограничения проверки
|
|
40
|
+
|
|
41
|
+
Шаблоны Godot 4.7.2 **установлены** в self-contained каталоге Steam: `Godot Engine/editor_data/export_templates/4.7.2.stable`. Прежняя диагностика отсутствия была ошибочной: маркер `._sc_` и данные расположены снаружи macOS `.app`. Детектор теперь учитывает этот путь и не принимает произвольный соседний каталог `editor_data` за активный. Отсутствие шаблонов отдельно проверяется искусственным fixture: API возвращает 422 с нужной версией, путём и инструкцией установки до запуска экспортёра. Скрипт загрузки Godot для CI проверен синтаксически, но пробная локальная загрузка официального архива завершилась сетевым таймаутом. CI на трёх ОС требует доступности официального релиза.
|
|
42
|
+
|
|
43
|
+
Первая версия поддерживает Godot. Unity и Roblox Studio оставлены будущими адаптерами согласно утверждённому плану. Kenney использует подборку и ручной импорт; OpenGameArt/itch.io открывают внешний поиск и требуют выбора лицензии пользователем. Избранное сохраняется в текущем браузере.
|
|
44
|
+
|
|
45
|
+
Светлая и тёмная темы, окно плана и мобильная оболочка проверены визуально по снимкам Playwright. Интерфейс показывает измеряемый прогресс загрузок/задач и неопределённый индикатор для ответов LLM.
|
|
46
|
+
|
|
47
|
+
## Живая проверка через browser-use — итог
|
|
48
|
+
|
|
49
|
+
По явному указанию пользователя проверка продолжена через browser-use. После первоначального прохода в управляемом Chromium дальнейшая проверка выполняется только в headless-режиме, без перехвата фокуса. Выбор папки пользователем и создание проекта прошли через настоящий UI; это отдельные результаты от сценариев Playwright с инъецируемым диалогом.
|
|
50
|
+
|
|
51
|
+
При живом аудите обнаружено зависание SSE при большой сохранённой истории: сервер переставал отвечать после `write(false)`. Исправление использует один асинхронный поток записи с ожиданием `drain`, ранней подпиской и дочитыванием событий из SQLite. После перезапуска тот же журнал загрузился в новой headless-сессии browser-use: UI показал «Подключено», проект и окно плана открылись сразу. Во время активного SSE и настоящей декомпозиции Codex запрос health вернул HTTP 200 за 48 мс. Регрессионный тест отдельно проверяет 2005 событий, поступления во время backpressure, восстановление после отключения и отсутствие блокировки обычных HTTP-запросов. Задача исправления `lmgh-24a` прошла живую повторную проверку.
|
|
52
|
+
|
|
53
|
+
В настоящем окне плана после исправления Markdown DOM содержит 14 элементов `strong`, одну таблицу и 39 элементов `code`.
|
|
54
|
+
|
|
55
|
+
После исправлений карточки разрешений и flex-компоновки чата настоящая ожидающая карточка первой игровой задачи проверена в headless-браузере на экранах 1440×900 и 390×844. Размер документа соответствует viewport; после нажатия основной кнопки `scrollY=0`, верх заголовка остаётся на координате `0`. В карточке видны причина, команда и рабочая папка; свёрнутые подробности открываются и закрываются. При обработке разрешений счётчик очереди последовательно уменьшился `3 → 2 → 1 → 0`; разрешение действия не изменило выбранную модель. Проверка подтверждает работу настоящей очереди разрешений и устойчивость компоновки на обоих размерах.
|
|
56
|
+
|
|
57
|
+
После исправления проверки addon typecheck/build, полный набор из 114 тестов в 13 файлах, все 6 E2E-сценариев и финальная проверка установленного npm-пакета прошли. Настоящий Codex завершил повторную приёмку Task 1: 94 команды проверяющей обвязки вернули код 0 без ошибок движка; подтверждены 58 игровых проверок и 20 проверок совместимости GUT. Развёрнутый результат задачи сохранён, независимая проверка Godot со стороны Hub успешна.
|
|
58
|
+
|
|
59
|
+
UI показал Task 1 «Готово», 1 из 2 задач и статус «Работа на паузе»; это зафиксировано на `skill-tasks-paused.png`, детали приёмки — на `skill-task1-verified.png`. После «Продолжить» настоящая Task 2 также завершилась: 15 сценариев, 2837 assertions PASS. Отдельный отрицательный fixture обнаружил 4 нарушения и вернул exit 1; другой fixture проверил таймаут, exit 124 за 30,006 с. Оба результата не смешиваются. После перезагрузки UI сохранились 2/2 готовые задачи, 100%; активного Codex нет. Повторная проверка экспорта и приёмка итогового HTML-отчёта завершены. Живой аудит выполнен; известное ограничение GUT зафиксировано явно. [Открыть итоговый HTML-отчёт с доказательствами](../.artifacts/ui-report/index.html).
|
|
60
|
+
|
|
61
|
+
В настройках через настоящий DOM подтверждены поле папки проектов только для чтения и доступная кнопка выбора (`skill-settings-folder-picker.png`). Повторный системный диалог из настроек не открывали, чтобы соблюдать требование пользователя не перехватывать фокус; настоящий диалог уже проверен ранее при создании проекта. Последующие браузерные проверки выполняются в фоне, headless.
|
|
62
|
+
|
|
63
|
+
После исправления уведомлений повторная загрузка не показывает старые сообщения завершения экспорта из сохранённого SSE-журнала. История в «Журнале» сохранена; новая реальная успешная операция показывает новое уведомление. Эти факты проверены на работающем приложении отдельно от профильных тестов фильтрации исторических событий.
|
|
64
|
+
|
|
65
|
+
## Экспорт macOS и Web — проверка исправления
|
|
66
|
+
|
|
67
|
+
Первый живой Desktop export отклонил конфигурацию: для Universal/Arm64 требовался ETC2/ASTC import. Новый scaffold явно включает `import_etc2_astc` и `import_s3tc_bptc`, сохраняя GL Compatibility и Web без потоков. В собственном тестовом игровом проекте добавлен только недостающий флаг ETC2/ASTC; экспорт не исправляет настройки произвольного пользовательского проекта автоматически. Правила путей проверены по [официальной документации self-contained Godot](https://docs.godotengine.org/en/stable/tutorials/io/data_paths.html) и [исходному коду editor_paths.cpp версии 4.7](https://github.com/godotengine/godot/blob/4.7/editor/file_system/editor_paths.cpp).
|
|
68
|
+
|
|
69
|
+
Настоящий новый scaffold без GUT успешно экспортирован установленным Steam Godot в обоих форматах: Desktop exit 0 без `ERROR`, ZIP 59 184 335 байт; Web exit 0 без `ERROR`, созданы HTML и ресурсы. Все команды выполнены headless. Профильные engine/assets/export тесты: 22/22 PASS; typecheck и build после исправления прошли. Финальные полные проверки также прошли: 127 тестов в 15 файлах за 22,29 с, 6 E2E за 16,7 с, typecheck/build и установленный npm-пакет.
|
|
70
|
+
|
|
71
|
+
У игрового fixture с GUT первый экспорт создал файлы, но записал `Cannot set object script` и поэтому не считается чистым успехом. На временной копии ошибка локализована при сериализации `addons/gut/gut_loader_the_scene.tscn`, в том числе с отключённым editor plugin. [Официальная сцена GUT 9.6.1](https://github.com/bitwes/Gut/blob/v9.6.1/addons/gut/gut_loader_the_scene.tscn) присваивает свойству `script` обычный `Resource`; локальный файл совпадает с ней. Повторные Web/Desktop экспорты с прогретым cache не выводят ошибку, что не доказывает исправление сторонней сцены. Hub сохраняет строгую проверку ошибок и не исключает addon-файлы автоматически. Успех чистого scaffold и ограничение первого экспорта GUT фиксируются отдельно.
|
|
72
|
+
|
|
73
|
+
После перезапуска финально собранного backend реальная диагностика UI показала готовность обоих шаблонов. Нажатие Desktop в Hub завершилось `engine.completed` с `ok:true`, `cancelled:false` для операции `2b53eda9-eec6-475f-8698-ad5dc7dd9a4c`; создан `builds/desktop/game.zip` собственного игрового fixture. Настоящий `unzip -t -qq` вернул 0; снимок — `skill-desktop-exported.png`. Это успешная UI-проверка Desktop с прогретым cache, отдельно от чистых CLI Desktop/Web сборок нового проекта. Она не устраняет описанный выше дефект первого экспорта сторонней сцены GUT. Задача исправления Hub `lmgh-lck` закрыта после живой приёмки.
|
|
74
|
+
|
|
75
|
+
## Приёмка итогового HTML-отчёта
|
|
76
|
+
|
|
77
|
+
[Самодостаточный отчёт на русском языке](../.artifacts/ui-report/index.html) принят после настоящего просмотра через headless browser-use: 25 проверок, из них 24 подтверждены и одна явно описывает ограничение первого экспорта сторонней сцены GUT. Все 30 оригинальных PNG встроены в HTML, совпадают с исходными файлами побайтно и успешно декодированы браузером. Отчёт размером 4,41 МБ не использует удалённые ресурсы, не содержит launch-токенов или внешних ссылок на файлы изображений.
|
|
78
|
+
|
|
79
|
+
Увеличение снимков и закрытие по Escape работают. На экранах 1440 и 390 пикселей ширина документа совпадает с viewport; горизонтального переполнения нет. Доказательства приёмки сохранены в [final-preview-verification.json](../.artifacts/ui-report/final-preview-verification.json). При завершении аудита авторизованный health работающего приложения на порту 4317 ответил HTTP 200, `status=ok`, `version=0.1.0`.
|
|
80
|
+
|
|
81
|
+
## Предыдущий этап: установленное расширение Chrome
|
|
82
|
+
|
|
83
|
+
6 октября 2026 локальный стек на `http://127.0.0.1:4317` запущен: `GET /` отвечает HTTP 200; авторизованные `/api/v1/health` и `/api/v1/projects` также отвечают HTTP 200. Health сообщает `status=ok`, `version=0.1.0`; список содержит один сохранённый проект. Секрет подключения и название проекта не публикуются.
|
|
84
|
+
|
|
85
|
+
Соединение с расширением Chrome восстановилось после ошибки загрузки политики: `nameSession`, `tabs.list` и `user.openTabs` отвечают, официальная HTTPS-страница OpenAI открывается. При навигации агента на оба локальных адреса наблюдался `ERR_BLOCKED_BY_CLIENT`; настоящий снимок localhost подтверждает этот экран. Другой снимок, сохранённый как `chrome-127-blocked.jpg`, фактически показывает экран подключения Hub без авторизации. Он подтверждает загрузку входной страницы, но не доступ к рабочей сессии и не прохождение игровых сценариев.
|
|
86
|
+
|
|
87
|
+
При повторной проверке 6 октября 2026 расширение вернуло inventory с открытой локальной вкладкой `363943852` на `http://127.0.0.1:4317`. Она по-прежнему показывала `ERR_BLOCKED_BY_CLIENT`; нажатие «Перезагрузить» сохранило этот экран. Снимок `chrome-local-current.jpg` отражает состояние на том этапе. Повторные запросы `GET /`, `/api/v1/health` и `/api/v1/projects` вернули HTTP 200; health сообщил `status=ok`, `version=0.1.0`, список проектов содержал один элемент.
|
|
88
|
+
|
|
89
|
+
Системный вызов `cua.getApp('com.google.Chrome')` сначала ожидал Accessibility / Screen Recording, затем вернул `Computer Use permissions are not granted`. Внутренняя вкладка `chrome://settings/security` не поддерживалась операцией `claimTab`. Это ограничивало диагностику через CUA на предыдущем этапе и **не устанавливает причину блокировки localhost**. После явного переключения пользователя на browser-use текущий аудит продолжается без ожидания этих разрешений; настоящий выбор папки уже проверен с участием пользователя.
|
|
90
|
+
|
|
91
|
+
Причина браузерной блокировки не установлена. Наблюдавшийся некорректный VPN-маршрут к `ab.chatgpt.com` не изменяли; расширение восстановило связь при сохранённом маршруте, поэтому полная причинная связь не доказана. Защитные настройки браузера и VPN не отключались.
|
|
92
|
+
|
|
93
|
+
В [официальной документации OpenAI о расширении браузера](https://learn.chatgpt.com/docs/chrome-extension) для localhost предлагается встроенный браузер. На этом этапе инструмент CUA предоставлял только расширение Chrome; встроенный браузер оказался недоступен. Эта рекомендация не доказывает причину ошибки расширения.
|
|
94
|
+
|
|
95
|
+
Снимки этого этапа сохраняют свидетельства ограничений именно расширения Chrome. Реальный выбор папки и игровые сценарии через это расширение не заявляются проверенными; последующее прохождение через browser-use описано отдельно выше. Автоматические и CLI-проверки также остаются отдельными результатами.
|
|
96
|
+
|
|
97
|
+
## Дополнение 7 октября: модель Codex по умолчанию
|
|
98
|
+
|
|
99
|
+
В Game Hub установлены значения по умолчанию `gpt-6.1-sol` и `medium`. [Официальная страница GPT-6.1 Sol](https://developers.openai.com/api/docs/models/gpt-6.1-sol) подтверждает поддержку medium. Дополнительно настоящий `model/list` установленного Codex 0.160.1 вернул точный slug и medium среди поддерживаемых уровней. Каталог CLI при этом сообщает собственный default `low`; поэтому Hub явно передаёт выбранный effort, а не полагается на настройки CLI.
|
|
100
|
+
|
|
101
|
+
Схема, сгенерированная установленным `codex app-server generate-json-schema`, подтверждает `model` в `thread/start` и `thread/resume`, а также `effort` в `turn/start`. Подтверждение доступности было read-only: платный inference/новая игровая задача не запускались. Тестовый RPC subprocess проверяет реальные сериализованные сообщения для нового и возобновляемого thread, пустых значений и явной пользовательской модели/effort. API/workflow тесты проверяют legacy fallback, сохранение частичных пользовательских настроек, передачу значения адаптеру и ошибки валидации.
|
|
102
|
+
|
|
103
|
+
Профильные `tests/settings.test.ts`, `tests/agent-adapters.test.ts`, `tests/workflow.test.ts`: 45 проверок проходят; typecheck и production build также прошли. Значения сохранены в текущей локальной базе Hub после проверки отсутствия активных runs, прочие настройки сохранены. Предыдущая запись настроек сохранена в закрытом локальном backup. Глобальный `~/.codex/config.toml` не изменялся. Живая проверка настроек выполнена отдельно от завершённого HTML-аудита за 6 октября.
|
|
104
|
+
|
|
105
|
+
В настоящем production UI через headless browser-use подтверждены `gpt-6.1-sol` в поле модели и `medium` в выборе уровня. Нажата «Сохранить», получено сообщение «Настройки сохранены»; после `Page.reload` оба значения сохранились. Авторизованный GET settings подтвердил те же значения. На ширинах 1440 и 390 пикселей документ не выходит за viewport. Скриншоты: [desktop](../.artifacts/codex-defaults-20261007/settings.png), [mobile](../.artifacts/codex-defaults-20261007/settings-mobile.png); [факты UI-проверки](../.artifacts/codex-defaults-20261007/ui-verification.json). Новый inference не запускался. Задача `lmgh-bc8` принята и закрыта.
|
|
106
|
+
|
|
107
|
+
## Дополнение 7 октября: события активности агента
|
|
108
|
+
|
|
109
|
+
Backend передаёт реальные фазы ожидания, размышления, ответа, инструментов и разрешений; текущий run восстанавливается из bounded SQLite-проекции. Профильный прогон activity/adapters/workflow/SSE: 67/67 PASS; typecheck прошёл. Fixtures проверяют 300 thinking deltas без потока повторных status events и отсутствие sentinel-текста размышлений во всех исходящих событиях, а также непопадание аргументов/токенов/вывода в краткие details. Claude detached tool_result не закрывает продолжающийся инструмент. Эти тесты не выдаются за вызовы настоящих моделей.
|
|
110
|
+
|
|
111
|
+
Отдельно исправлена подсказка toolchain для задач: workflow теперь использует фактически обнаруженные `engine.exportTemplates.directory`, `web` и `desktop`, вместо повторного построения standard path. Проверены Steam self-contained путь, различающаяся доступность Desktop/Web и отсутствие метаданных шаблонов. Диагностический detector не дублируется. Живая UI-приёмка новой активности завершена на общей production-сборке; результаты приведены ниже.
|
|
112
|
+
|
|
113
|
+
Первая живая проверка Codex выявила служебный `userMessage`, ошибочно показанный инструментом, и отсутствие thinking-сигналов в обычном ответе GPT-6.1 Sol medium. После этого normalizer ограничен известными action item types; принятие `turn/start`/`turn/started` явно обозначает обработку запроса без доступа к содержимому reasoning. Добавлены fixtures с userMessage и обычным ответом без reasoning notifications, проверка возврата в обработку после инструмента и защита от позднего ACK. Повторная живая приёмка на новой общей сборке подтвердила исправление обоих случаев.
|
|
114
|
+
|
|
115
|
+
Финальный прогон после изменений activity: **160 тестов в 18 файлах PASS за 23,98 с**, полный набор **7 E2E PASS за 22,5 с**, typecheck и production build прошли. Финальная `npm run test:package` также прошла: установленный CLI, собранный UI и авторизованный API. E2E проверяет command/search/read/write/tool, разрешения, reload и завершение через управляемый тестовый provider с настоящим UI/API/SSE. Эти инструментальные сценарии не выдаются за команды настоящего Codex.
|
|
116
|
+
|
|
117
|
+
Настоящий read-only chat Codex на собственном Star Counter выполнил run `63e859c2-b74d-4804-9cb0-4c5fd3726352`: ровно `waiting → thinking → answering`, все три записи завершены. Ложных tool/userMessage записей нет. В UI зафиксирована живая фаза «Думает» с `data-live=true`; `Page.reload` во время этой фазы восстановил тот же активный статус. Затем снят живой ответ на desktop и mobile, после завершения — idle, `data-live=false` и три строки истории с completed. Кнопка остановки полностью видима и попадает в hit-test: desktop Y=610…646 перед composer Y=658; mobile Y=546…582 перед composer Y=594. Проверка выполнялась headless, в фоне.
|
|
118
|
+
|
|
119
|
+
Сохранены [факты UI-проверки](../.artifacts/agent-activity-20261007/ui-verification.json), [итог настоящего run](../.artifacts/agent-activity-20261007/live-run-final.json) и снимки в той же папке. Обе игровые задачи остались выполненными, 2/2; команды для файлов и планов в этом read-only чате не выполнялись. Отдельный датированный отчёт активности дополняет прежний HTML-аудит за 6 октября, который сохранён без подмены.
|
|
120
|
+
|
|
121
|
+
Исправление toolchain hint подтверждено unit-регрессиями: путь Steam self-contained и раздельные флаги Web/Desktop берутся из общего `engine.exportTemplates`; отсутствие метаданных не превращается в выдуманный standard path. Никакая новая установка шаблонов или сборка игры для этой поправки не заявляется.
|
|
122
|
+
|
|
123
|
+
[Отдельный HTML-отчёт активности за 7 октября](../.artifacts/agent-activity-20261007/index.html) готов и принят после настоящего headless-просмотра. Он содержит 8 проверок в рамках этой функции и 10 оригинальных PNG, встроенных без преобразования и побайтно совпадающих с исходниками; все 10 изображений декодированы браузером. Размер — 1,42 МБ. Увеличение снимков и Escape работают; ширина документа совпадает с viewport 1440/390. Удалённые ресурсы и токены авторизации отсутствуют. [Доказательства приёмки отчёта](../.artifacts/agent-activity-20261007/report-preview-verification.json).
|
|
124
|
+
|
|
125
|
+
В отчёте раздельно отмечены настоящий read-only chat Codex и инструментальные/permission-сценарии управляемого тестового провайдера. Общий HTML-аудит за 6 октября сохранён отдельно и не заменён новым отчётом.
|
|
126
|
+
|
|
127
|
+
|
|
128
|
+
## Интерактивное интервью — 8 октября 2026
|
|
129
|
+
|
|
130
|
+
Финальная общая сборка прошла typecheck и production build, **180 тестов в 20 файлах за 23,64 с**, **9 E2E за 25,3 с** и проверку установленного npm-пакета (CLI, собранный HTML, авторизованный API). Профильные серверные проверки охватывают структуру раундов, обязательные ответы, уникальные идентификаторы, варианты, числовые границы/шаг, свои ответы, устаревшие и повторные отправки, отмену, сохранение и отсутствие protocol JSON в потоке. Проверки браузера с управляемым провайдером включают ошибки отправки с сохранением ответов, следующий раунд и восстановление черновиков. Они отделены от настоящего вызова модели ниже.
|
|
131
|
+
|
|
132
|
+
В фоновой headless-сессии настоящий Codex на собственном тестовом Star Counter сформировал один раунд из трёх вопросов: single, multi и range. Через настоящий UI проверены переключение вариантов, свой текст, несколько ответов, клавиатурное управление ползунком, синхронизация ползунка и числового поля, а также восстановление черновика после перезагрузки. Отправка сохранила точные ответы: собственное описание тёмного оформления без вспышек, управление мышью и горячими клавишами, цель 10 звёзд. Следующий настоящий ответ модели завершил интервью (`complete`, без новых вопросов) и корректно изложил эти пожелания.
|
|
133
|
+
|
|
134
|
+
Состояние Star Counter после проверки содержит 4 прежние версии плана и 2 прежние задачи: интервью не создало и не утвердило новые планы или задачи. [Сохранённое состояние после проверки](../.artifacts/interactive-interview-20261008/after-state.json) фиксирует связанный answered-раунд с точными ответами и отдельный complete-раунд; снимки настоящего UI находятся в той же папке артефактов.
|
|
135
|
+
|
|
136
|
+
В исходной «Змейке» прежние три текстовых вопроса A/B/C отображаются интерактивными контролами без переписывания серверной истории. Проверены desktop/mobile, выбор и восстановление локального черновика; ответы этого проекта не отправлялись. На сервере сохранились прежние 2 сообщения, без планов и задач. Это подтверждает совместимость с уже существующим интервью, а не только со вновь созданными JSON-раундами.
|
|
137
|
+
|
|
138
|
+
Живая проверка нового структурированного протокола выполнена с Codex. Claude и Kimi покрыты общим workflow через контролируемые адаптеры; новые реальные вызовы этих моделей в рамках данной проверки не заявляются. Консервативный legacy-parser распознаёт явные нумерованные вопросы с буквенными вариантами, но не превращает произвольную прозу в формы. Обычный текстовый чат продолжает потоковую выдачу; JSON интервью сначала валидируется сервером, пока UI показывает активность агента. [Протокол и ограничения](interactive-interview.md), [поведение интерфейса](interactive-interview-ui.md).
|
|
139
|
+
|
|
140
|
+
|
|
141
|
+
## Анимация нового текста — 8 октября 2026
|
|
142
|
+
|
|
143
|
+
После изменения представления генерируемого текста прошли **193 теста в 21 файле за 22,40 с**, полный набор **10 E2E за 33,8 с**, typecheck и production build. Финальная `npm run test:package` также прошла: установленный CLI, собранный UI и авторизованный API. Размер основного entry — 494,26 кБ, предупреждения о размере chunk отсутствуют. Анимация применяется к новому публичному тексту; история после reload не должна воспроизводиться заново, а JSON служебного протокола не показывается как ответ.
|
|
144
|
+
|
|
145
|
+
В первом живом read-only чате настоящего Codex, проверенном headless до следующего указания пользователя, ответ сохранял Markdown во время генерации: заголовок, два пункта списка, один блок кода и две активные анимируемые части. Мобильная проверка шириной 390 px не показала горизонтального переполнения. После указания пользователя использовать установленное расширение Chrome дальнейшая проверка выполнена через него: во втором настоящем read-only чате зафиксированы `answering`, одна активная часть текста, заголовок, три пункта списка и два блока кода до завершения ответа. Кнопка остановки оставалась видимой.
|
|
146
|
+
|
|
147
|
+
После завершения и перезагрузки в настоящем Chrome число активных анимаций равно нулю; ширина документа 1397 px соответствует viewport без горизонтального переполнения. Первоначальный `ERR_BLOCKED_BY_CLIENT` при навигации исчез после повторного подключения автоматически: политика безопасности и настройки браузера не изменялись. Этот временный сбой не является текущим блокером проверки. Основной сервер не перезапускался, выполнявшаяся пользовательская «Змейка» и её ожидающий запрос разрешения не изменялись.
|
|
148
|
+
|
|
149
|
+
Отдельные fixture-снимки и E2E покрывают управляемые состояния интерфейса; они не выдаются за результаты настоящего вызова Codex. Живые доказательства Chrome и предыдущей headless-сессии сохранены в [папке артефактов анимации](../.artifacts/frost-text-20261008/).
|
|
150
|
+
|
|
151
|
+
Во время полного прогона выявлено нестабильное ожидание в прежнем тесте Codex activity: ACK принятия запроса и reasoning notifications могут попадать в разные stdout/microtask группы. Завершение reasoning item допустимо создаёт отдельный bounded thinking lifecycle до первого инструмента. Исправлены только тесты: разрешены одна или две разные завершённые записи Codex, сохранены проверки всех категорий, приватности и общего числа событий. Три детерминированных порядка ACK подтверждают, что 300 повторных reasoning-сигналов создают ровно ноль дополнительных событий. Runtime-адаптер не изменялся. Предшествующий таймаут SSE под нагрузкой не воспроизвёлся в профильной проверке 10/10; финальный общий прогон прошёл полностью.
|
|
152
|
+
|
|
153
|
+
|
|
154
|
+
## Переход от интервью к плану и уточнение анимации — 8 октября 2026
|
|
155
|
+
|
|
156
|
+
Последняя общая сборка прошла **200 тестов в 21 файле за 24,62 с**, полный набор **12 E2E за 40,3 с** и typecheck/build; основной entry — 495,55 кБ. Финальная `npm run test:package` прошла: установленный CLI, собранный UI и авторизованный API. Пять профильных браузерных сценариев прошли за 23,5 с: проверены действительная видимая фаза анимации 900 мс, оформление тени и стабильное продвижение раскрытия кодового блока с шагом 30 мс. Эти проверки используют управляемый тестовый провайдер и настоящие UI/API/SSE; они не выдаются за новый живой просмотр через расширение Chrome.
|
|
157
|
+
|
|
158
|
+
Регрессионный сценарий перехода воспроизводит старый утверждённый план с задачами и более новое завершённое интервью. В Overview, Tasks и окне плана показана необходимость обновления; «начинай реализацию» открывает новый неутверждённый план, а явная кнопка «Создать план» запрашивает очередной черновик. Сервер отклоняет запуск, возобновление и утверждение устаревшего плана, сохраняет это ограничение при неуспешной генерации и разрешает дальнейшую приёмку намеренно обновлённой вручную версии. Завершение интервью не подменяет утверждение плана.
|
|
159
|
+
|
|
160
|
+
Перед новой живой проверкой настоящий API «Змейки» показал `planNeedsUpdate:true`: прежний утверждённый план и 24 задачи сохранены. Их автоматическое исполнение не запускалось. Сервер перезапущен root после проверки отсутствия активной работы; health ответил успешно. В собственном Star Counter команда «начинай реализацию», переданная через настоящий API в режиме interview, вернула run вида `planning`. Настоящий установленный Codex успешно завершил run `85521bd9-ad1f-40c8-b43a-fcbe2280b195`: сохранён черновик v5 длиной 9662 символа, без `approvedAt`, с `interviewRoundId: 0b9082d7-a52c-4638-8127-af27dae9b14c`. Количество задач осталось равным 2. Утверждение и выполнение задач при этой проверке не запрашивались. После проверки планы, задачи и сообщения «Змейки» остались неизменными; `planNeedsUpdate:true` сохраняется до явного обновления её плана.
|
|
161
|
+
|
|
162
|
+
После этого перезапуска новая навигация расширения Chrome вновь вернула `ERR_BLOCKED_BY_CLIENT`. Ранее открытая вкладка содержит старый bundle и не подтверждает работу нового API после смены локальной сессии. Поэтому предыдущая успешная проверка Chrome из раздела анимации не выдаётся за живую приёмку этой новой сборки. Fallback через browser-use не применялся; политика безопасности не изменялась. Серверные результаты и контролируемые E2E сохраняются как отдельные доказательства. [Артефакты этой проверки](../.artifacts/frost-chat-fix-20261008/).
|
|
163
|
+
|
|
164
|
+
|
|
165
|
+
## Разворачивающийся журнал после утверждения плана — 8 октября 2026
|
|
166
|
+
|
|
167
|
+
Финальная сборка журнала прошла typecheck/build (основной entry 498,73 кБ), **212 тестов в 22 файлах за 25,19 с**, **14 E2E за 48,6 с** и `npm run test:package` с проверкой установленного CLI, собранного UI и авторизованного API. Контролируемые сценарии работают с настоящими API/SSE/SQLite и проверяют немедленную обратную связь при запросе утверждения, реальные стадии подготовки, восстановление после reload, разрешения, ошибки и сохранённые количества задач. Внешняя модель в этих сценариях заменена адаптером; это не утверждение о новом живом вызове модели.
|
|
168
|
+
|
|
169
|
+
Журнал сохраняет этапы утверждения, подготовки навыков, генерации эпиков и задач, проверки графа и сохранения. Генерация графа остаётся одним честно обозначенным длительным шагом; количества эпиков/задач появляются после записи, без фиктивных процентов. Существующий автоматический переход к выполнению после успешной декомпозиции сохранён. Проверка и реализация этой функции ограничены desktop в соответствии с выбором пользователя.
|
|
170
|
+
|
|
171
|
+
[HTML-отчёт журнала](../.artifacts/approval-journal-20261008/index.html) прошёл настоящий CUA-просмотр: 6 пунктов (5 подтверждены, 1 явное ограничение), все 4 изображения загрузились, переполнения нет, просмотр снимка и закрытие через Escape работают. При ручной проверке страницы приложения через расширение Chrome получен `ERR_BLOCKED_BY_CLIENT`; успешный просмотр самого отчёта не выдаётся за доступ к приложению или за живую приёмку нового интерфейса на основном сервере.
|
|
172
|
+
|
|
173
|
+
На момент первоначальной приёмки журнала основной backend оставался на предыдущей версии: в пользовательском проекте «змейка» активен execution run `317c74eb-e79b-4329-b5a0-34d02152b817` и ожидает одно разрешение. Его не останавливали и не перезапускали ради обновления журнала. После подготовки проверенной сборки и наглядного отчёта пользователю предложен выбор — остановить работу и обновить сервер либо сохранить выполнение и дождаться безопасного момента. Первоначальная готовность сборки и её проверки были отделены от развёртывания; последующая безопасная активация описана ниже.
|
|
174
|
+
|
|
175
|
+
Личный навык `~/.codex/skills/html-ui-demos` проверен; он предназначен для автономных desktop HTML-вариантов интерфейса/анимации. Его наличие не заменяет приведённые проверки приложения. [Серверный контракт журнала](approval-journal.md), [поведение интерфейса](workflow-journal-ui.md).
|
|
176
|
+
|
|
177
|
+
|
|
178
|
+
## Автоподтверждение действий и безопасная активация — 8 октября 2026
|
|
179
|
+
|
|
180
|
+
Финальная общая сборка прошла typecheck/build (entry 498,81 кБ), **222 теста в 24 файлах за 24,86 с**, **15 E2E за 50,7 с** и `npm run test:package` (установленный CLI, production UI и авторизованный API). Контролируемый workflow через настоящий API/SSE подтвердил автоматическое разрешение действия без карточки ожидания и событие `permission.auto_approved`. Проверены сохранение настройки, её применение к уже ожидающему действию, отсутствие повторного разрешения, ошибки, остановка и восстановление. Настоящие вопросы пользователя не получают выдуманных ответов; provider read-only ограничения сохранены.
|
|
181
|
+
|
|
182
|
+
После прямого разрешения пользователя существующий запрос запуска headless Godot был подтверждён. Для установки обновления запрошена пауза на границе задачи: текущая задача завершилась, run перешёл в `paused`, очередь сохранила 1 готовую и 15 открытых задач, ожидающих разрешений не осталось. Перед перезапуском проверены все проекты: активных операций, выполняемых задач и ожидающих разрешений нет. Принудительная остановка выполняемой задачи не применялась.
|
|
183
|
+
|
|
184
|
+
Основной сервер на порту 4317 безопасно перезапущен с новой версией. Сравнение до и после подтвердило одинаковые статусы задач и счётчики попыток во всех проектах. `PUT autoApproveActions:true` сохранил настройку; последующий GET вернул `true`, health — HTTP 200. Возобновление приостановленного пользовательского проекта создало execution run `b9abe977…`, продолжающий оставшиеся задачи. Тем самым обновлённый backend и журнал активированы, а прежнее ограничение развёртывания устранено.
|
|
185
|
+
|
|
186
|
+
За первые 20 секунд наблюдения живого SSE события `permission.auto_approved` ещё не поступали. Поэтому наличие включённой политики и продолжение настоящей работы не выдаются за уже наблюдавшееся автоматическое разрешение реального запроса. Само событие и отсутствие ожидания подтверждены контролируемым E2E-сценарием; новый платный вызов модели только ради проверки разрешения не запускался.
|
|
187
|
+
|
|
188
|
+
[Обновлённый отчёт журнала и автоподтверждения](../.artifacts/approval-journal-20261008/index.html) содержит 8 пунктов: 7 подтверждены и 1 явно обозначает ограничение Chrome; встроены 6 исходных снимков. Блокировка страницы приложения расширением Chrome сохраняется как отдельное ограничение, а не подменяется успешными автоматическими проверками. [Политика автоподтверждения](automatic-approvals.md) описывает различие действий и пользовательских вопросов.
|
|
189
|
+
|
|
190
|
+
|
|
191
|
+
## 8 октября: параллельный подбор ассетов и desktop-мастер
|
|
192
|
+
|
|
193
|
+
Финальный `typecheck`, production build и `test:package` прошли. Полный unit/integration прогон: **261 тест в 28 файлах**, 23,46 с. Сквозной UI: **17 E2E**, 1 минута; после стабилизации снимков повторены два сценария мастера, оба прошли за 13,5 с. Проверены desktop-размеры 1024/1280/1440, восстановление после reload, ручная загрузка вне игры, обязательный выбор, пропуск необязательного материала, итоговое подтверждение, импорт, запуск, пустой поиск, отмена и новая версия плана. Главный Vite chunk — 501 кБ: сборка успешна с предупреждением размера.
|
|
194
|
+
|
|
195
|
+
С установленным Codex `gpt-6.1-sol` / `medium` выполнена отдельная проверка на изолированном проекте: пять read-only вызовов, подтверждённое пересечение времени, четыре задачи и три обязательные потребности. После исправления фильтрации получены только совместимые типы: пять 2D-наборов Kenney, два набора UI Kenney и три аудиоварианта Kenney/OpenGameArt. До выбора `canExecute=false`, реализация не запускалась. [JSON-доказательство](../.artifacts/asset-selection-20261008/live-qa.json).
|
|
196
|
+
|
|
197
|
+
Настоящий ZIP OpenGameArt **8-Bit Sound Effects Library** (Little Robot Sound Factory, CC-BY-3.0) импортирован в изолированный проект: 80 файлов, `LMGH-CREDITS.txt` с автором/источником/лицензией/атрибуцией. Повторный импорт использует тот же каталог. При проверке обнаружены macOS-метаданные ZIP: исправлена их безопасная фильтрация с сохранением отказа traversal/symlink; добавлены регрессии. [Доказательство импорта](../.artifacts/asset-selection-20261008/live-import.json).
|
|
198
|
+
|
|
199
|
+
Локальный CLI запущен с `--no-open` на `127.0.0.1:4317`; авторизованный health HTTP200. Сравнение до/после подтвердило сохранность четырёх пользовательских проектов, всех 68 задач (статусы/попытки) и планов; готовая игра не запускалась. [Проверка runtime](../.artifacts/asset-selection-20261008/runtime.json).
|
|
200
|
+
|
|
201
|
+
[Самодостаточный HTML-отчёт](../.artifacts/asset-selection-20261008/index.html) содержит семь оригинальных встроенных снимков: шесть настоящего UI с контролируемыми SVG/WAV, моделью и верификатором, один блокировки Chrome. Эти тестовые картинки явно помечены fixture и не представляют внешние провайдеры. Живая LLM и внешняя загрузка проверены отдельно. Расширение Chrome блокирует локальное приложение `ERR_BLOCKED_BY_CLIENT`, в том числе страницу без launch-фрагмента; причина не установлена, настройки защиты не изменялись. HTML-отчёт на отдельном локальном сервере успешно открыт этим расширением: все семь изображений декодированы, увеличение и Escape работают, при ширине1397 нет переполнения. [Проверка отчёта](../.artifacts/asset-selection-20261008/report-verification.json).
|
|
202
|
+
|
|
203
|
+
|
|
204
|
+
## 8 октября: настоящие медиа-превью и Idle Farm
|
|
205
|
+
|
|
206
|
+
Финальные проверки: **273 теста в 30 файлах**, 28,95 с; **18 обычных E2E**, 1,1 минуты, opt-in сетевой тест пропущен в общем прогоне и выполнен отдельно: **1 live E2E**, 17,6 с. Typecheck/build/test:package прошли. SVG-проверка в настоящем браузере подтверждает отрисовку безопасного изображения и блокировку скриптов во встроенном и прямом просмотре. Логи в `.artifacts/real-media-20261008/`.
|
|
207
|
+
|
|
208
|
+
Для примера инкрементальной Idle Farm скачаны шесть настоящих ресурсов: Kenney Background Elements, Tiny Farm, UI Pack, Interface Sounds; OpenGameArt Other Center (zesona); Blender Foundation Big Buck Bunny Trailer. Всего **15 148 904 байта**, лицензии и SHA256 сохранены в `.artifacts/real-assets-20261008/downloads.json`. Дополнительные монеты Kenney Pixel Platformer проверены отдельно: оригинальные Tiles/tile_0151.png и tile_0152.png; provenance в coin-cache. Видео — проверка плеера, а не обещание художественной совместимости с фермой.
|
|
209
|
+
|
|
210
|
+
Реальный Chromium загрузил изображения staged/imported; воспроизвёл аудио каталога, деталей и мастера; звук из архивной галереи использовал authenticated endpoint. Видео: 33,002667 с, 853×480, 27 декодированных кадров, перемотка до 5 с. Все проверки проигрывания выполнялись без звука. Исправлено смещение галереи обложкой: первые provider-запросы начинаются с offset0. Каталог содержит 19 записей; 24/24 media URL прошли HTTP/MIME/signature аудит. В сетевом UI-тесте только LLM-планирование контролируемое; реальные каталог, внешние файлы, импорт и preview endpoints. Новая игра не создавалась.
|
|
211
|
+
|
|
212
|
+
Production CLI безопасно перезапущен с --no-open на 127.0.0.1:4317; health200, provider audio gallery100 файлов, Range206/audio/ogg/OggS. Сравнение состояния подтвердило сохранность всех четырёх пользовательских проектов и 68 задач, планов и попыток. [Runtime-доказательство](../.artifacts/real-media-20261008/runtime.json).
|
|
213
|
+
|
|
214
|
+
[HTML-отчёт с четырьмя оригинальными UI-снимками и встроенными настоящими изображениями/аудио/видео](../.artifacts/real-media-20261008/index.html). Приложение остаётся заблокированным расширением Chrome (ERR_BLOCKED_BY_CLIENT), поэтому его UI проверен проектным Playwright; настройки защиты не менялись. Отчёт проверяется отдельно через установленное расширение. Список поддерживаемых форматов и fallback: [asset-media.md](asset-media.md).
|
|
215
|
+
|
|
216
|
+
## 9 октября: Яндекс Игры, HTML5 и проверка настоящими играми
|
|
217
|
+
|
|
218
|
+
Финальные typecheck и production build прошли. **326 unit/integration тестов в 35 файлах**, **23 E2E PASS, 1 opt-in live-asset skip**. Установка упакованного npm CLI с production UI/API прошла. Чистые HTML5 2D/3D и Godot 4.7.2 2D/3D шаблоны действительно собраны. Два Web-экспорта Godot подтвердили исключение QA-скрипта из PCK и сохранение рабочего скрипта; контроль без фильтра включает QA. Существующие пресеты пользовательских проектов не переписывались. Все 14 установленных в двух тестовых проектах SKILL.md валидны.
|
|
219
|
+
|
|
220
|
+
Через настоящий Hub UI в изолированном состоянии созданы две игры: HTML5/Phaser и Godot. Реальный установленный Codex (`gpt-6.1-sol`, medium) выполнил декомпозицию и разработку, независимые engine checks прошли. Импортирован и выбран настоящий Kenney Pixel Platformer PNG (CC0), который отображается в играх. Только ответ системного directory picker подставлен тестовым сервером; основной UI/API, ассет, выполнение Codex и экспорт настоящие. Основные пользовательские игры и их DAG не изменялись ради проверки.
|
|
221
|
+
|
|
222
|
+
Кнопкой UI созданы валидные ZIP: HTML5 1 211 760 байт / 5 файлов; Godot 39 874 564 байта / 9 файлов. В headless Chromium с официальным development SDK (HTTP 200) проверены победа после 10 mouse-кликов, восстановление после reload, перезапуск в 0 и новое начисление. Отдельные мобильные Chromium-контексты `hasTouch/isMobile` прошли 10 touchscreen.tap и сохранили счёт 10; физический телефон не проверялся. Ошибок JavaScript нет, HTML5 имел GPU ReadPixels warnings. Godot в портретном режиме доступен, но сохраняет широкое поле с полосами; удобство портретного UI самого прототипа требует дальнейшей доработки. Восстановление подтверждает гостевой локальный backup, а не hosted cloud save.
|
|
223
|
+
|
|
224
|
+
Реальные безопасные publication MCP-вызовы подтверждены установленными Codex и Kimi; Claude CLI недоступен. Тесты адаптера Claude и состояния публикации прошли с контролируемыми ответами. Chrome пользователя блокирует loopback `ERR_BLOCKED_BY_CLIENT`; отдельный Chrome MCP-мост на порту 12306 не подключён. Пользователь сообщил, что черновика нет: production SDK cloud/ads/auth/payments/leaderboards и внешняя модерация не проверены. Такие сценарии в тестах явно обозначены fixtures. 18×18 PNG в publication gallery проверяет импорт/превью, но не считается готовой платформенной иконкой.
|
|
225
|
+
|
|
226
|
+
[Самодостаточный HTML-отчёт с 15 встроенными исходными скриншотами](../.artifacts/yandex-games-20261009/index.html). Рядом находятся логи и JSON-доказательства, включая `live-ui-proof.json`, `gameplay-proof.json`, `touch-proof.json`. Открытие file:// отчёта через установленное расширение Chrome запрещено URL-политикой браузера; обход не выполнялся. Сам файл доступен для самостоятельного открытия. Подробные настройки и границы интеграции: [yandex-games.md](yandex-games.md).
|
|
227
|
+
|
|
228
|
+
Обычный production CLI запущен с `--no-open --port 4317`, стандартным directory picker и пользовательским data-dir. Health, список проектов и POST browser diagnostics вернули HTTP 200; production desktop UI в headless Chromium загрузился без page errors. До запуска активных пользовательских операций не было. Изолированный QA-сервер 4321 остановлен, его краткоживущий launch token удалён; тестовые игры и ZIP сохранены в артефактах. Все 15 встроенных PNG отчёта полностью декодируются; токенов запуска в HTML нет. Финальный `test:package` повторён после последних изменений и прошёл.
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
# Создание игры по видео
|
|
2
|
+
|
|
3
|
+
В новом интерфейсе откройте шаг «Идея», в классическом — разговор с агентом. Нажмите «Показать игру в видео», выберите MP4, MOV, WebM или MKV и добавьте пожелания: что повторить и что изменить. Один проект содержит один текущий видеореференс. Размер — до 10 ГБ, ограничений длительности нет.
|
|
4
|
+
|
|
5
|
+
## Подготовка и обработка
|
|
6
|
+
|
|
7
|
+
Мастер подготовки использует установленный FFmpeg/FFprobe или устанавливает закреплённые версии переносимых бинарников. Для звука создаётся отдельное Python-окружение в каталоге данных Hub; требуется Python 3.11–3.13. Мастер скачивает Faster Whisper small и CLAP, сохраняет ревизии моделей и версии пакетов. Загруженные кадры передаются выбранному CLI-агенту через его подписку; речь и звук обрабатываются локально. Отдельного видео API и новых ключей нет.
|
|
8
|
+
|
|
9
|
+
Загрузка идёт порциями по 8 МиБ. После обрыва выберите тот же файл и нажмите «Продолжить загрузку». Сервер хранит подтверждённое смещение; браузер дополнительно сверяет размер, время изменения и отпечаток начала/конца файла. Несовпадающий файл не присоединяется к старой загрузке.
|
|
10
|
+
|
|
11
|
+
Анализ охватывает всю временную шкалу сегментами по 30 секунд. Изображения выбираются с базовой частотой 1 кадр/с и до 8 кадров/с вокруг движения и смен сцен, затем отправляются пакетами до 12 изображений. Это анализ всей длительности с выборкой, а не доказательство просмотра моделью каждого кадра. Параллельно распознаётся речь и классифицируются звуки. Их классификация — вероятностная подсказка, а не точное распознавание каждого эффекта.
|
|
12
|
+
|
|
13
|
+
Одна задача анализа выполняется на весь Hub, другие проекты ждут очередь. «Пауза» сохраняет завершённые пакеты; «Остановить сейчас» отменяет текущий вызов. После сбоя или перезапуска сервера продолжение запускается вручную. При смене агента, модели или языка нужен новый разбор. Промежуточные результаты хранятся в SQLite проекта, исходное видео и временные кадры — в `.lm-game-hub/video`. Временные кадры полного анализа удаляются после обработки сегмента. После принятия разбора отдельные 12 кадров с таймкодами по всей длительности сохраняются в `reference-frames` и передаются в планирование, декомпозицию и реализацию. Эти кадры дополняют полный отчёт. План и визуальные задачи должны сохранять композицию, масштаб, материалы и расположение HUD и сравнивать контрольные скриншоты с референсом; наличие объектов само по себе не подтверждает сходство.
|
|
14
|
+
|
|
15
|
+
## Отчёт и план
|
|
16
|
+
|
|
17
|
+
Разбор включает геймплей, физику и движение, камеру, ассеты, окружение и сеттинг, интерфейс, развитие и звук. Наблюдения отделены от предположений и неизвестного, содержат таймкоды. Точный код, физические константы, скрытая логика и исходные ассеты из видео не восстанавливаются автоматически.
|
|
18
|
+
|
|
19
|
+
Откройте «Наблюдения и доказательства», чтобы перейти к нужному моменту видео. Для кодеков, которые браузер не воспроизводит, доступен совместимый H.264-фрагмент по 30 секунд.
|
|
20
|
+
|
|
21
|
+
После проверки нажмите «Использовать разбор и уточнить идею». Агент уточняет оставшиеся решения, затем существующий процесс создаёт план для вашего утверждения. Анализ сам не запускает разработку. Новый анализ или удаление референса делает старый план неактуальным; обновите и утвердите его снова.
|
|
22
|
+
|
|
23
|
+
## API
|
|
24
|
+
|
|
25
|
+
- `GET /api/v1/video-tools` — состояние локальных инструментов; `POST /install` на том же пути — запуск мастера установки.
|
|
26
|
+
- `GET/POST/DELETE /api/v1/projects/:id/video` — текущий референс, создание загрузки и удаление.
|
|
27
|
+
- `PATCH /api/v1/projects/:id/video/:videoId/upload?offset=N` — бинарная порция, `application/octet-stream`.
|
|
28
|
+
- `POST /api/v1/projects/:id/video/:videoId/complete` — проверка контейнера и завершение загрузки.
|
|
29
|
+
- `POST /api/v1/projects/:id/video/analyze` с `{resume:false|true}` — новый разбор или продолжение.
|
|
30
|
+
- `POST /api/v1/projects/:id/video/accept` — принять разбор и начать уточнение идеи.
|
|
31
|
+
- `GET /api/v1/projects/:id/video/segments?offset=N&limit=10` — результаты сегментов постранично.
|
|
32
|
+
- `GET /api/v1/projects/:id/video/:videoId/media` — исходник с Range; `GET .../preview/:index` — совместимый фрагмент.
|
|
33
|
+
- Существующий `/projects/:id/control` поддерживает pause/stop/resume для `video_analysis`.
|
|
34
|
+
|
|
35
|
+
API использует текущую локальную авторизацию Hub. Имена файлов не используются как пути или команды. Все входящие выводы моделей и таймкоды проверяются; частичный разбор нельзя принять как завершённый.
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
# Журнал после утверждения плана
|
|
2
|
+
|
|
3
|
+
Выбранный пользователем вариант B встроен в production UI для настольного приложения. `WorkflowJournal.tsx` показывает раскрываемый журнал в окне плана; после закрытия окна тот же журнал остаётся над рабочей областью. История не исчезает по таймеру. Пользователь может свернуть её кнопкой с `aria-expanded`. Мобильный макет в рамках этой функции не разрабатывался.
|
|
4
|
+
|
|
5
|
+
Нажатие «Утвердить и начать» сразу создаёт локальное состояние запроса, до HTTP-ответа: «Подтверждаем план» и пояснение, что сервер ещё не подтвердил начало. «План принят» появляется только после подтверждённого decomposition run/API-ответа. Ошибка HTTP остаётся в журнале, но поздняя ошибка доставки ответа не отменяет уже наблюдаемый серверный run. Повторное утверждение не выдаёт прежнюю разработку за новый запуск. Локальный request сбрасывается при смене проекта; после reload источником истины служит сервер.
|
|
6
|
+
|
|
7
|
+
`workflow-journal.ts` объединяет сохранённый `workspace.decomposition` с `run.updated` и `workflow.stage`: новая попытка заменяет прежнюю по `startedAt`, одноимённые стадии обновляются только при большей `sequence`, завершённый run не откатывается в running равновременным replay. Серверные стадии отражают утверждение, установку навыков, генерацию эпиков/задач, валидацию и сохранение. Количества показываются только из подтверждённых серверных counts. До появления задач нет процентной шкалы или оценки оставшегося времени. После сохранения доступен настоящий счётчик done/total и стандартный progress.
|
|
8
|
+
|
|
9
|
+
Разработка использует существующий автоматический переход decomposition→execution; журнал не отправляет команд исполнения и не меняет политику разрешений. Текущая задача берётся из сохранённой очереди, текущая активность — из существующего нормализованного ActivitySnapshot. Ожидание разрешения имеет приоритет, отключает анимацию работы и предлагает открыть чат с существующей карточкой. Ошибка, пауза, остановка и завершение имеют отдельные заголовки. При разрыве SSE выводится состояние восстановления связи, активная анимация отключена. Старый сервер без новых полей показывает доступный run и permission без вымышленных пяти стадий.
|
|
10
|
+
|
|
11
|
+
Визуальная обратная связь — три движущиеся полосы и пульс текущей строки; новые блоки раскрываются коротким переходом. `prefers-reduced-motion` отключает движения. Статус объявляется через polite status, весь список не является live region. Журнал имеет ограниченную высоту и внутреннюю прокрутку; пользовательский текст и технические журналы не получают новую анимацию. Ранее выбранный G-эффект генерируемого текста сохранён.
|
|
12
|
+
|
|
13
|
+
## Проверки
|
|
14
|
+
|
|
15
|
+
- `tests/workflow-journal.test.ts`: восемь проверок pending/failed/accepted race, устаревших snapshots/SSE, повторного утверждения, project isolation, реальных counts, permission priority, старого runtime и escaped errors. Typecheck и focused tests проходят.
|
|
16
|
+
- `tests/e2e/workflow-journal.spec.ts`: production UI с настоящими API, SSE, сохранением и автоматическим handoff; модель и verifier контролируемые. Сценарии включают 503, задержку approve 1300ms, подготовку, permission, завершение, reload, reduced motion и ошибку графа. Root выполнил полный набор: 14/14 E2E PASS (48.6s), включая оба новых сценария. Сохранённые fixture-generation/permission/completed screenshots показывают настоящий собранный UI с контролируемой моделью; это не подтверждение работы реального LLM.
|
|
17
|
+
- `tests/fixtures/journal-hub.ts`: повторно используемый изолированный QA-server. `createJournalHub({port:4331,autoAdvance:true,approvalDelayMs:1600,autoApproveActions:false})` создаёт временную папку, один demo-проект и план. Возвращает закрываемый сервер и launch URL. Через восемь секунд controlled model отдаёт граф; autoexecution запрашивает демонстрационное разрешение. Allow завершает injected verification, deny следует обычной backend retry-политике. Реальные LLM, движок, subprocess и пользовательские проекты не используются. `close()` удаляет только свою временную папку. URL содержит авторизацию и не включается в публичный отчёт.
|
|
18
|
+
|
|
19
|
+
Финальные проверки root: 212/212 unit tests в 22 файлах PASS (25.19s), production build PASS (основной chunk 498.73 kB), package smoke PASS. Chrome extension заблокировал адрес отдельного QA-приложения (`ERR_BLOCKED_BY_CLIENT`); ручная Chrome-приёмка production UI не заявляется. Standalone-прототип проверен отдельно и не заменяет проверку приложения. Основной сервер не перезапускался, пока пользовательская разработка ожидает разрешения; новая backend-часть активируется после безопасного перезапуска. Ни тесты, ни QA fixture не меняют текущий пользовательский проект.
|
|
20
|
+
|
|
21
|
+
Автоматические разрешения: журнал показывает подтверждённые backend события `permission.auto_approved` только для своего проекта и соответствующего run, без состояния ожидания. Исторические события не включают анимацию; повторы дедуплицируются. Подробности настройки и ограничений в [agent-permissions-ui.md](agent-permissions-ui.md).
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
# HTML5 и Яндекс Игры
|
|
2
|
+
|
|
3
|
+
Проекты поддерживают Godot или HTML5 (TypeScript/Vite, Phaser 3.90 для 2D и Three.js 0.186 для 3D). Выбор Яндекс Игр добавляет Web в список целей и сохраняет публичную конфигурацию в `Project.yandexGames`. Секреты и ключи подписи не входят в клиентскую конфигурацию. Монетизация и авторизация выключены по умолчанию; гостевая игра доступна без входа.
|
|
4
|
+
|
|
5
|
+
`yandex-config.ts` валидирует appId, устройства, ориентацию, языки, рекламу, облачные сохранения, продукты с декларативной выдачей и рейтинги. `html5.ts` создаёт полностью упакованные строковые шаблоны, устанавливает зависимости проекта с `--ignore-scripts` и запускает typecheck + production build. `yandex-godot.ts` устанавливает автозагрузку LMYandex, сохраняемые JavaScriptBridge callback и пользовательский Web shell. Нативная проверка Godot не обращается к браузерному SDK.
|
|
6
|
+
|
|
7
|
+
`templates/yandex-sdk.ts` — общий runtime для обоих движков. Он инициализирует настоящий YaGames, отделяет LoadingAPI.ready от GameplayAPI.start/stop и объединяет причины паузы: реклама, скрытая вкладка, потеря фокуса и событие платформы. Игровая интеграция объединяет принудительное отключение звука с собственным выбором игрока. Сохранения и выдача покупок сериализованы; зарезервированные кошелёк и журнал токенов не перезаписываются обычным сохранением. Награда и токен покупки сохраняются с flush=true перед consumePurchase; повторное восстановление не выдаёт награду второй раз. Клиентский журнал не заменяет серверную проверку подписи или антифрод.
|
|
8
|
+
|
|
9
|
+
Godot получает сигнал `reward_received(request_id)` и после фактического сохранения награды вызывает `acknowledge_reward(request_id, true)`. При ошибке вызывается `acknowledge_reward(request_id, false, message)`. Пока нет подтверждения, реклама не возвращает успешный результат; ожидание ограничено 45 секундами. HTML5 передаёт в `advertisement('rewarded', callback)` callback, возвращающий Promise сохранения. Результаты асинхронных вызовов моста приходят через `result_received` / `request_failed`; предупреждения сохранения — `platform_warning`.
|
|
10
|
+
|
|
11
|
+
`web-build.ts` создаёт отдельную папку для каждой сборки и ZIP без внешнего архиватора. Проверяются корневой index.html, имена, размеры, CRC, отсутствие приватных файлов, тестовых SDK и встроенной копии sdk.js, наличие загрузки `/sdk.js` и статических признаков LoadingAPI/GameplayAPI. Размер распакованных данных ограничен 100 МБ (100 000 000 байт), количество файлов — 20 000. Проверка строк SDK подтверждает наличие интеграции, а не успешное поведение реальных облачных сервисов. Godot GDScript внутри PCK необходим для игры и не запрещается. Пресеты новых Godot-проектов исключают зарезервированные `tests/`, `verification/`, `test-results/`, `reports/`, `.git/`, `.env*`, а также метаданные Hub и `builds/`. Это предотвращает упаковку тестовых `.gd` в непрозрачный для ZIP-валидатора PCK; рабочие скрипты игры должны находиться вне тестовых каталогов. Экспорт существующих пользовательских проектов не переписывает их пресеты автоматически.
|
|
12
|
+
|
|
13
|
+
Публикация получает только сохранённый `GameBuild`. SHA-256 ZIP, хеш файлов предпросмотра и хеш текущей конфигурации проверяются повторно. Изменившаяся конфигурация или файлы требуют новой сборки. Изменение проекта, экспорт и активная публикация используют взаимные блокировки. Сборка и загрузка черновика не означают отправку на модерацию.
|
|
14
|
+
|
|
15
|
+
Предпросмотр — отдельный HTTP-сервер на случайном loopback-порту, без открытия окна браузера и без COEP для однопоточного Web. `/sdk.js` проксирует единственный официальный development adapter: `https://yastatic.net/s3/games-static/sdk-dev/yandex-dev-adapter.js`; ответ ограничен 5 MiB и 15 секундами. Это режим разработки, не доказательство работы на опубликованной платформе. В production ZIP остаётся относительная к платформе ссылка `/sdk.js`, а development adapter не включается. Официальный `@yandex-games/sdk-dev-proxy@0.0.2` при app-id/dev-mode автоматически открывает браузер; Hub не запускает этот режим, чтобы не перехватывать фокус.
|
|
16
|
+
|
|
17
|
+
API:
|
|
18
|
+
|
|
19
|
+
- `GET/PUT /api/v1/projects/:id/yandex-games/config`: чтение `{config,enabled,configHash}` и сохранение полной строгой конфигурации.
|
|
20
|
+
- `POST /api/v1/projects/:id/engine/export` с `{platform:"yandex-games"}`: асинхронная сборка, события `engine.log` и `engine.completed` с buildId/validation/url.
|
|
21
|
+
- `GET /api/v1/projects/:id/builds`: история артефактов.
|
|
22
|
+
- `POST /api/v1/projects/:id/builds/:buildId/validate`: повторная проверка актуального артефакта.
|
|
23
|
+
- `GET /api/v1/projects/:id/builds/:buildId/download`: аутентифицированный ZIP.
|
|
24
|
+
|
|
25
|
+
Четыре авторских навыка Яндекс Игр (`yandex-games-sdk`, `yandex-games-release`, `yandex-games-godot`, `yandex-games-html5`) применяются по движку и платформе. Два последних содержат отдельные `references/integration.md` с примерами готовности сцены, корреляции async-ответов/подтверждения наград, типизированного ввода и выпуска. HTML5 также получает базовые `html5-foundation` и `html5-validation`. Каталог `GET /api/v1/extensions?projectId=…` возвращает только рекомендации для движка, платформы, размерности и жанра проекта; MCP-манифест получает его движок, GUT предлагается только Godot. Явная установка навыка другого движка или Яндекс-навыка в обычный Web-проект отклоняется. Пути дополнительных reference-файлов проходят те же проверки симлинков, что SKILL.md. Godot-пакеты/GUT не устанавливаются в HTML5. План и декомпозиция получают настройки платформы; проверки SDK, интеграции и выпуска входят в задачи по утверждённому объёму, а не включают необязательную монетизацию автоматически.
|
|
26
|
+
|
|
27
|
+
Официальные источники (проверены 2026-10-09): [требования](https://yandex.ru/dev/games/doc/ru/concepts/requirements), [подключение SDK](https://yandex.ru/dev/games/doc/ru/sdk/sdk-about), [события игры](https://yandex.ru/dev/games/doc/ru/sdk/sdk-game-events), [реклама](https://yandex.ru/dev/games/doc/ru/sdk/sdk-adv), [игрок и сохранения](https://yandex.ru/dev/games/doc/ru/sdk/sdk-player), [покупки](https://yandex.ru/dev/games/doc/ru/sdk/sdk-purchases), [рейтинги](https://yandex.ru/dev/games/doc/ru/sdk/sdk-leaderboard), [локальный запуск](https://yandex.ru/dev/games/doc/ru/concepts/local-launch), [Godot JavaScriptBridge](https://docs.godotengine.org/en/4.7/classes/class_javascriptbridge.html), [Vite build](https://vite.dev/guide/build.html), [Phaser](https://docs.phaser.io/phaser/getting-started/installation), [Three.js](https://threejs.org/manual/pages/installation.html).
|