@vgai/editor 0.2.0 → 0.4.0-canary.20260715.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.
Files changed (430) hide show
  1. package/README.md +24 -0
  2. package/dist/assets/axe-C7YBtOuM.js +30 -0
  3. package/dist/assets/browserAll-DDtGGE48.js +1 -0
  4. package/dist/assets/create-runtime-DbTlBlKG.js +1 -0
  5. package/dist/assets/{game-BI111o5f.js → game-BE0r7DMI.js} +3 -3
  6. package/dist/assets/game-BdTHR2_X.js +1 -0
  7. package/dist/assets/{game-pt_1lQLv.js → game-C3iQGSqo.js} +1 -1
  8. package/dist/assets/game-CcHfYxjP.js +1 -0
  9. package/dist/assets/game-Cqzj_lpD.js +1 -0
  10. package/dist/assets/game-DSZdeCHu.js +1 -0
  11. package/dist/assets/game-Dch9sAPc.js +1 -0
  12. package/dist/assets/{game-xsOho_wg.js → game-SAFn90pA.js} +3 -3
  13. package/dist/assets/game-loop-DMIgSMV-.js +1 -0
  14. package/dist/assets/{game-source-CvidN7AB.js → game-source-Dk83w26t.js} +1 -1
  15. package/dist/assets/{index-Bp5cecD6.js → index-4idIsHHJ.js} +2 -2
  16. package/dist/assets/{index-DL7RcQ0n.js → index-C-LhOTBN.js} +1 -1
  17. package/dist/assets/{index-Cs8xwv3e.js → index-CDkxceqE.js} +1 -1
  18. package/dist/assets/index-CQEfi217.js +15412 -0
  19. package/dist/assets/index-Dvi-V0NE.css +1 -0
  20. package/dist/assets/ingest-siblings-s0P5I1Ub.js +1 -0
  21. package/dist/assets/mount-manifest-DXMOlF79.js +1 -0
  22. package/dist/assets/react-18-C9eHn8x1.js +1 -0
  23. package/dist/assets/webworkerAll-Fn0e-ouF.js +1 -0
  24. package/dist/assets/world-documents-GM0a9Kv7.js +1 -0
  25. package/dist/index.html +15 -13
  26. package/dist/ingest/racing-game/vgai.game.json +5 -4
  27. package/dist/ingest/simcity/vgai.game.json +5 -4
  28. package/dist/ingest/tanks/vgai.game.json +5 -4
  29. package/dist/project-scripts.bundle.js +3917 -0
  30. package/dist/scenes/untitled.vscn.json +2 -0
  31. package/dist-server/packaged.mjs +7697 -3435
  32. package/package.json +31 -4
  33. package/scripts/probe-reporter.ts +349 -0
  34. package/scripts/run-probe.ts +2260 -0
  35. package/server/asset-catalog-audit.ts +268 -0
  36. package/server/asset-catalog-v2.ts +146 -0
  37. package/server/asset-library-routes.ts +276 -58
  38. package/server/canonical-path.ts +1 -1
  39. package/server/dev.ts +148 -44
  40. package/server/editor-server.ts +888 -61
  41. package/server/editor-sse.ts +115 -4
  42. package/server/harness-chat-service.ts +796 -0
  43. package/server/local-asset-catalog.ts +157 -22
  44. package/server/packaged.ts +51 -21
  45. package/server/process-shutdown.ts +136 -0
  46. package/server/prod.ts +9 -6
  47. package/server/project-hmr-files.ts +41 -0
  48. package/server/project-operations.ts +343 -0
  49. package/server/project-optimize-deps-entries.ts +4 -4
  50. package/server/project-output-writer.ts +156 -0
  51. package/server/project-validation.ts +140 -0
  52. package/server/project-view.ts +8 -50
  53. package/server/server-utils.ts +75 -10
  54. package/server/session-registry.ts +12 -0
  55. package/src/EditorContext.tsx +107 -3
  56. package/src/action-registry.ts +115 -17
  57. package/src/adapter-resolver.ts +213 -478
  58. package/src/asset-events.ts +64 -1
  59. package/src/asset-preview.ts +906 -0
  60. package/src/asset-selection.ts +121 -0
  61. package/src/asset-workflow/asset-capabilities.ts +259 -0
  62. package/src/asset-workflow/asset-editor-errors.ts +46 -0
  63. package/src/asset-workflow/asset-import-pipeline.ts +176 -0
  64. package/src/asset-workflow/asset-library-query.ts +107 -0
  65. package/src/asset-workflow/asset-types.ts +192 -0
  66. package/src/asset-workflow/asset-workflow-quality.ts +65 -0
  67. package/src/asset-workflow/import-contract.ts +113 -0
  68. package/src/asset-workflow/model-conversion.ts +126 -0
  69. package/src/asset-workflow/model-inspection.ts +185 -0
  70. package/src/asset-workflow/project-asset-commands.ts +23 -0
  71. package/src/asset-workflow/project-asset-health.ts +153 -0
  72. package/src/asset-workflow/project-asset-operations.ts +119 -0
  73. package/src/asset-workflow/thumbnail-system.ts +172 -0
  74. package/src/authoring/active-systems.ts +15 -0
  75. package/src/authoring/boundary-authoring-adapter.ts +16 -5
  76. package/src/authoring/composite-authoring-adapter.ts +305 -124
  77. package/src/authoring/design-time-layers.ts +300 -117
  78. package/src/authoring/edit-mode-authoring.ts +278 -293
  79. package/src/authoring/embed-only-adapter.ts +4 -2
  80. package/src/authoring/first-party-hierarchy-menu.ts +7 -2
  81. package/src/authoring/first-party-inspector/AddSectionMenu.tsx +5 -12
  82. package/src/authoring/first-party-inspector/EnvironmentSection.tsx +53 -126
  83. package/src/authoring/first-party-inspector/HeaderSection.tsx +54 -65
  84. package/src/authoring/first-party-inspector/is-first-party-selection.ts +30 -11
  85. package/src/authoring/first-party-inspector/register.tsx +13 -2
  86. package/src/authoring/ingest-authoring-adapter.ts +142 -45
  87. package/src/authoring/mount-failure-report.ts +5 -5
  88. package/src/authoring/provenance.ts +41 -0
  89. package/src/authoring/react-dom-authoring-adapter.ts +92 -92
  90. package/src/authoring/react-inspector-section.tsx +489 -51
  91. package/src/authoring/react-world-authoring-adapter.ts +541 -306
  92. package/src/authoring/story-overlay.ts +1 -1
  93. package/src/authoring/story-types.ts +11 -0
  94. package/src/authoring/vgai-scene-authoring-adapter.ts +54 -25
  95. package/src/authoring/viewport-tool-context.ts +78 -0
  96. package/src/authoring/world-canvas-viewport-state.ts +35 -0
  97. package/src/authoring/world-hidden-viewport.ts +186 -0
  98. package/src/authoring/world-pan-state.ts +33 -17
  99. package/src/authoring/world-session-state.ts +1 -1
  100. package/src/authoring/world2d-authoring-adapter.ts +109 -52
  101. package/src/availability-tick.ts +56 -0
  102. package/src/browser-play-entry.ts +5 -5
  103. package/src/browser-project-scripts.ts +1 -0
  104. package/src/build-identity.ts +15 -0
  105. package/src/command-listener.ts +893 -19
  106. package/src/components/AlignToolbar.tsx +74 -63
  107. package/src/components/AppRoot.tsx +193 -26
  108. package/src/components/ApplicationMenus.tsx +272 -0
  109. package/src/components/AssetBrowser.tsx +1450 -293
  110. package/src/components/AssetEditorShell.tsx +141 -0
  111. package/src/components/AssetImportDetails.tsx +218 -0
  112. package/src/components/AssetLibraryPanel.tsx +14 -0
  113. package/src/components/CameraInfo.tsx +11 -20
  114. package/src/components/CenterDocuments.tsx +585 -0
  115. package/src/components/CommandPalette.tsx +75 -30
  116. package/src/components/ConsolePanel.css +55 -0
  117. package/src/components/ConsolePanel.tsx +57 -112
  118. package/src/components/DebugConsolePanel.tsx +461 -0
  119. package/src/components/DebuggerPanel.tsx +165 -0
  120. package/src/components/DefaultEditorLayout.tsx +167 -231
  121. package/src/components/GameHierarchy.tsx +873 -290
  122. package/src/components/GamePerformanceOverlay.tsx +46 -0
  123. package/src/components/HarnessChatPanel.tsx +2352 -0
  124. package/src/components/HistoryPanel.tsx +226 -0
  125. package/src/components/Inspector.tsx +153 -99
  126. package/src/components/InspectorToolSection.tsx +6 -4
  127. package/src/components/MountFailureBanner.tsx +31 -48
  128. package/src/components/NetworkSection.tsx +25 -14
  129. package/src/components/OnlineAssetBrowser.tsx +794 -343
  130. package/src/components/OverlayReportBanner.tsx +38 -64
  131. package/src/components/PerformancePanel.tsx +206 -0
  132. package/src/components/PlayBar.tsx +93 -263
  133. package/src/components/PrefabSaveDialog.tsx +55 -127
  134. package/src/components/ProjectHeader.css +60 -0
  135. package/src/components/ProjectHeader.tsx +170 -105
  136. package/src/components/ProjectScreen.tsx +246 -184
  137. package/src/components/ReactCanvasControls.tsx +185 -0
  138. package/src/components/ResolutionPicker.tsx +85 -0
  139. package/src/components/RootActivateDialog.tsx +39 -68
  140. package/src/components/SaveDialog.tsx +55 -127
  141. package/src/components/SaveStatus.tsx +11 -29
  142. package/src/components/StartupLoadingScreen.tsx +96 -0
  143. package/src/components/StateWatchPanel.tsx +302 -0
  144. package/src/components/StatsOverlay.tsx +12 -5
  145. package/src/components/StatusBar.tsx +64 -0
  146. package/src/components/ThemeManagerDialog.css +89 -0
  147. package/src/components/ThemeManagerDialog.tsx +371 -0
  148. package/src/components/ToolHost.tsx +26 -15
  149. package/src/components/Toolbar.tsx +117 -214
  150. package/src/components/VgaiVoxelLogo.tsx +89 -0
  151. package/src/components/ViewportOverlay.tsx +97 -172
  152. package/src/components/ViewportPanel.tsx +130 -31
  153. package/src/components/WorkspaceDock.tsx +891 -0
  154. package/src/components/WorldSelectionOverlay.tsx +51 -63
  155. package/src/components/WorldTextEditor.tsx +9 -5
  156. package/src/components/asset-documents.tsx +390 -0
  157. package/src/components/asset-editor-persistence.ts +44 -0
  158. package/src/components/asset-selection-section.tsx +338 -0
  159. package/src/components/asset-viewers/AudioViewer.tsx +73 -21
  160. package/src/components/asset-viewers/GenericJsonViewer.tsx +26 -11
  161. package/src/components/asset-viewers/ImageViewer.tsx +43 -11
  162. package/src/components/asset-viewers/InputMapViewer.tsx +512 -134
  163. package/src/components/asset-viewers/MaterialAssetEditor.tsx +540 -0
  164. package/src/components/asset-viewers/ModelViewer.tsx +805 -121
  165. package/src/components/asset-viewers/OnlineAssetDetail.tsx +177 -60
  166. package/src/components/asset-viewers/SourceAssetViewer.tsx +121 -0
  167. package/src/components/asset-workflow.css +506 -0
  168. package/src/components/build-documents.tsx +696 -0
  169. package/src/components/core-utilities.tsx +75 -0
  170. package/src/components/data-documents.tsx +364 -0
  171. package/src/components/{DataPanel.tsx → data-editor.tsx} +138 -288
  172. package/src/components/debugger-panel-state.ts +57 -0
  173. package/src/components/inspector-widgets/AlignmentGrid.tsx +8 -14
  174. package/src/components/inspector-widgets/BorderEditor.tsx +41 -33
  175. package/src/components/inspector-widgets/ColorPicker.tsx +39 -39
  176. package/src/components/inspector-widgets/FontPicker.tsx +13 -21
  177. package/src/components/inspector-widgets/GradientEditor.tsx +11 -19
  178. package/src/components/inspector-widgets/ScrubbableInput.tsx +6 -3
  179. package/src/components/inspector-widgets/ShadowEditor.tsx +20 -33
  180. package/src/components/inspector-widgets/shared.tsx +90 -49
  181. package/src/components/inspectors/AnimationSection.tsx +39 -40
  182. package/src/components/inspectors/AudioSection.tsx +28 -39
  183. package/src/components/inspectors/BoneAttachmentSection.tsx +19 -24
  184. package/src/components/inspectors/CameraSection.tsx +14 -23
  185. package/src/components/inspectors/ComponentsSection.tsx +39 -43
  186. package/src/components/inspectors/JointsSection.tsx +34 -43
  187. package/src/components/inspectors/LightSection.tsx +90 -35
  188. package/src/components/inspectors/MaterialSection.tsx +137 -174
  189. package/src/components/inspectors/MeshSection.tsx +9 -17
  190. package/src/components/inspectors/NavigationSection.tsx +8 -15
  191. package/src/components/inspectors/ParticleSection.tsx +91 -76
  192. package/src/components/inspectors/PhysicsSection.tsx +42 -46
  193. package/src/components/inspectors/PostProcessingSection.tsx +28 -36
  194. package/src/components/inspectors/RenderingSection.tsx +12 -20
  195. package/src/components/inspectors/ShadowSection.tsx +7 -8
  196. package/src/components/inspectors/SplineSection.tsx +31 -42
  197. package/src/components/inspectors/TransformSection.tsx +14 -22
  198. package/src/components/patterns/Dialog.tsx +95 -0
  199. package/src/components/patterns/Fields.tsx +44 -0
  200. package/src/components/patterns/List.tsx +25 -0
  201. package/src/components/patterns/StateSurface.tsx +40 -0
  202. package/src/components/patterns/Surfaces.tsx +115 -0
  203. package/src/components/patterns/Tabs.tsx +80 -0
  204. package/src/components/patterns/Toolbar.tsx +51 -0
  205. package/src/components/patterns/Tree.tsx +72 -0
  206. package/src/components/primitives/Button.tsx +46 -0
  207. package/src/components/primitives/ColorInput.tsx +11 -47
  208. package/src/components/primitives/EditorIcon.tsx +99 -0
  209. package/src/components/primitives/FormControls.tsx +71 -0
  210. package/src/components/primitives/JsonInput.tsx +15 -2
  211. package/src/components/primitives/Layout.tsx +100 -0
  212. package/src/components/primitives/Menu.tsx +105 -0
  213. package/src/components/primitives/NumberInput.tsx +8 -35
  214. package/src/components/primitives/Panel.tsx +49 -44
  215. package/src/components/primitives/SectionHeader.tsx +10 -28
  216. package/src/components/primitives/Text.tsx +46 -0
  217. package/src/components/primitives/Tooltip.tsx +20 -12
  218. package/src/components/primitives/Vec3Input.tsx +3 -0
  219. package/src/components/primitives/banner-tones.ts +33 -0
  220. package/src/components/primitives/editor-icons.ts +102 -0
  221. package/src/components/primitives/panel-header-styles.ts +30 -0
  222. package/src/components/project-operation-documents.tsx +226 -0
  223. package/src/components/status-contributions.tsx +175 -0
  224. package/src/components/story-documents-register.ts +15 -0
  225. package/src/components/story-documents.tsx +1185 -0
  226. package/src/components/tool-documents.tsx +110 -0
  227. package/src/components/workspace-dock.css +293 -0
  228. package/src/components/workspace-history.ts +33 -0
  229. package/src/components/world-documents.tsx +145 -0
  230. package/src/components/xstate-documents.tsx +209 -0
  231. package/src/composite-screenshot.ts +248 -0
  232. package/src/design-system/index.ts +70 -0
  233. package/src/design-system-stories/Foundation.stories.tsx +183 -0
  234. package/src/design-system-stories/Patterns.stories.tsx +251 -0
  235. package/src/design-system-stories/Workspace.stories.tsx +538 -0
  236. package/src/doctor/report.ts +57 -13
  237. package/src/editor-api.ts +295 -31
  238. package/src/editor-compatibility.ts +200 -0
  239. package/src/editor-console.ts +35 -17
  240. package/src/editor-hotkeys.ts +85 -33
  241. package/src/editor-store.ts +538 -233
  242. package/src/editor-viewport.ts +160 -34
  243. package/src/entity-factory.ts +14 -3
  244. package/src/gizmo-registry.ts +21 -5
  245. package/src/harness-chat-editor-context.ts +37 -0
  246. package/src/harness-chat-indicator.ts +68 -0
  247. package/src/harness-chat-layout.ts +53 -0
  248. package/src/harness-chat-lifecycle.ts +170 -0
  249. package/src/harness-chat-reconnect.ts +85 -0
  250. package/src/harness-chat-types.ts +409 -0
  251. package/src/hierarchy-drop.ts +50 -0
  252. package/src/hierarchy-expansion-state.ts +100 -0
  253. package/src/hierarchy-menu-registry.ts +1 -1
  254. package/src/hierarchy-projection.ts +76 -0
  255. package/src/history/editor-session.ts +21 -0
  256. package/src/history/history-commands.ts +147 -0
  257. package/src/history/history-service.ts +904 -0
  258. package/src/history/json-history-resource.ts +165 -0
  259. package/src/history/persistence-coordinator.ts +35 -0
  260. package/src/history/project-file-history.ts +266 -0
  261. package/src/history/project-root-history-backends.ts +53 -0
  262. package/src/history/resource-registry.ts +209 -0
  263. package/src/history/snapshot-store.ts +108 -0
  264. package/src/history/source-history-backend.ts +374 -0
  265. package/src/history/types.ts +100 -0
  266. package/src/hmr-registration-group.ts +67 -0
  267. package/src/hmr-stable-react-context.ts +23 -0
  268. package/src/hosted-example.ts +12 -2
  269. package/src/hotkeys.ts +89 -18
  270. package/src/ingest/discovery-react.ts +9 -10
  271. package/src/ingest/discovery.ts +4 -4
  272. package/src/ingest/discovery2d.ts +5 -5
  273. package/src/ingest/games/bloom-composer/vgai.game.json +3 -3
  274. package/src/ingest/games/embed-bundle/vgai.game.json +3 -3
  275. package/src/ingest/games/games-fps/vgai.game.json +3 -3
  276. package/src/ingest/games/iframe-reachable/vgai.game.json +3 -3
  277. package/src/ingest/games/interactive-cubes/vgai.game.json +3 -3
  278. package/src/ingest/games/mismatched-three/vgai.game.json +3 -3
  279. package/src/ingest/games/own-three-bundled/vgai.game.json +3 -3
  280. package/src/ingest/games/pointerlock-maze/vgai.game.json +7 -4
  281. package/src/ingest/games-2d/bubbo-bubbo/vgai.game.json +3 -3
  282. package/src/ingest/games-2d/bunnymark/vgai.game.json +3 -3
  283. package/src/ingest/games-2d/flappy/vgai.game.json +3 -3
  284. package/src/ingest/games-2d/flappy-pixi/vgai.game.json +3 -3
  285. package/src/ingest/games-2d/puzzling-potions/vgai.game.json +3 -3
  286. package/src/ingest/games-2d/tilemap-camera/vgai.game.json +3 -3
  287. package/src/ingest/games-react/react-rpg/vgai.game.json +3 -3
  288. package/src/ingest/types.ts +1 -1
  289. package/src/ingest-mode.ts +47 -52
  290. package/src/ingest-siblings.ts +23 -33
  291. package/src/initial-scene.ts +1 -2
  292. package/src/main.tsx +16 -8
  293. package/src/manifest-project.ts +10 -12
  294. package/src/model-thumbnail.ts +261 -26
  295. package/src/module-mode.ts +44 -50
  296. package/src/play-log-events.ts +26 -0
  297. package/src/play-mode.ts +495 -401
  298. package/src/play-scene-adoption.ts +23 -0
  299. package/src/playground/main.ts +68 -24
  300. package/src/playwright-shim.ts +473 -0
  301. package/src/project-manager.ts +90 -10
  302. package/src/project-operations.ts +112 -0
  303. package/src/project-story-discovery.ts +25 -0
  304. package/src/project-tool-discovery.ts +43 -0
  305. package/src/scene-serializer.ts +0 -6
  306. package/src/scene-sync.ts +7 -2
  307. package/src/script-loader.ts +3 -3
  308. package/src/skeleton-helper.ts +57 -0
  309. package/src/storage/seed.ts +68 -8
  310. package/src/stories/StoryPreviewMount.tsx +265 -0
  311. package/src/stories/action-stories.fixture.tsx +44 -0
  312. package/src/stories/button-stories.fixture.tsx +50 -0
  313. package/src/stories/compose-project-stories.ts +182 -0
  314. package/src/stories/loader-stories.fixture.tsx +53 -0
  315. package/src/stories/story-discovery.ts +130 -0
  316. package/src/stories/story-registry.ts +146 -0
  317. package/src/theme-css.ts +1049 -0
  318. package/src/theme-library.ts +238 -0
  319. package/src/theme-preference.ts +130 -0
  320. package/src/theme.ts +527 -0
  321. package/src/tool-loader.ts +80 -24
  322. package/src/ui-source/inspect.ts +27 -4
  323. package/src/ui-source/source-write-backend.ts +83 -22
  324. package/src/widgets/index.ts +9 -18
  325. package/src/workspace-aux-commands.ts +11 -0
  326. package/src/workspace-dock-controller.ts +64 -0
  327. package/src/workspace-document-ids.ts +5 -0
  328. package/src/workspace-document-registry.ts +367 -0
  329. package/src/workspace-state-persistence.ts +455 -0
  330. package/src/workspace-status-registry.ts +110 -0
  331. package/src/workspace-utility-commands.ts +49 -0
  332. package/src/workspace-utility-registry.ts +161 -0
  333. package/src/world-document-routing.ts +16 -0
  334. package/src/xstate-inspect/XStateMachineInspector.tsx +544 -0
  335. package/src/xstate-inspect/character-animation-machine.fixture.ts +74 -0
  336. package/src/xstate-inspect/use-live-actor-state.ts +39 -0
  337. package/src/xstate-inspect/xstate-graph.ts +265 -0
  338. package/src/xstate-inspect/xstate-layout.ts +76 -0
  339. package/src/z-index.ts +26 -0
  340. package/template/.claude/skills/editor/SKILL.md +129 -90
  341. package/template/AGENTS.md +1110 -0
  342. package/template/CLAUDE.md +1 -512
  343. package/template/IDIOMS.md +50 -0
  344. package/template/check-idioms.ts +706 -0
  345. package/template/manifest-entry-modules-plugin.ts +53 -0
  346. package/template/package.json +13 -4
  347. package/template/public/scenes/default.scn2d.json +6 -0
  348. package/template/public/scenes/default.vscn.json +7 -1
  349. package/template/public/scenes/untitled.vscn.json +10 -0
  350. package/template/scripts/playtest.ts +40 -0
  351. package/template/server/loopback.ts +75 -0
  352. package/template/server/rooms/arena-room.ts +69 -1
  353. package/template/server/rooms/game-room.ts +68 -1
  354. package/template/src/data/README.md +9 -4
  355. package/template/src/data/data-ref.ts +35 -0
  356. package/template/src/data/tuning.schema.ts +1 -1
  357. package/template/src/main.ts +41 -62
  358. package/template/src/manifest-entry-modules.d.ts +3 -0
  359. package/template/src/operations/README.md +88 -0
  360. package/template/src/runtime/pixi-adapter.ts +24 -0
  361. package/template/src/scripts/components/data-spinner.ts +43 -2
  362. package/template/src/scripts/components/spin-lap-math.ts +27 -0
  363. package/template/src/tools/README.md +5 -3
  364. package/template/src/tools/example.tool.tsx +13 -7
  365. package/template/src/ui/Button.stories.tsx +66 -0
  366. package/template/src/ui/RebindPanel.tsx +2 -6
  367. package/template/src/ui/game.tsx +17 -0
  368. package/template/tests/acceptance/example.spec.ts +64 -0
  369. package/template/tests/logic/example.test.ts +31 -0
  370. package/template/tests/logic/room.test.ts +100 -0
  371. package/template/tests/tsconfig.json +30 -0
  372. package/template/validate-manifest.ts +5 -5
  373. package/template/validate-scenes.ts +50 -18
  374. package/template/vgai.game.json +20 -13
  375. package/template/vite.config.ts +77 -16
  376. package/vite-plugin-ui-oid.ts +261 -17
  377. package/dist/assets/CCDIKSolver-Dz-ysxZF.js +0 -1
  378. package/dist/assets/SelectionBox-BXsv_6aH.js +0 -1
  379. package/dist/assets/browser-project-scripts-DOru4L1x.js +0 -2
  380. package/dist/assets/browserAll-CEkWYlFk.js +0 -1
  381. package/dist/assets/create-runtime-DYIWr3va.js +0 -1
  382. package/dist/assets/data-asset-Bb9sIM7i.js +0 -5
  383. package/dist/assets/game-8SDZPPgH.js +0 -1
  384. package/dist/assets/game-CevorxyV.js +0 -1
  385. package/dist/assets/game-Di7XlywD.js +0 -1
  386. package/dist/assets/game-DjnCaw8R.js +0 -1
  387. package/dist/assets/game-Q9A0aXSV.js +0 -1
  388. package/dist/assets/index-CPVV6pjw.js +0 -1
  389. package/dist/assets/index-CpOnYyeD.js +0 -213
  390. package/dist/assets/index-Dr8H_6Rl.js +0 -1
  391. package/dist/assets/index-_bCaipUk.js +0 -13650
  392. package/dist/assets/ingest-siblings-Dz8eEqrV.js +0 -1
  393. package/dist/assets/mount-manifest-Bhk0ohsl.js +0 -1
  394. package/dist/assets/scene-query-BivAHhJu.js +0 -1
  395. package/dist/assets/webworkerAll-BLrH0F6F.js +0 -1
  396. package/dist/assets/xstate-animation-binding-1NGLmw6y.js +0 -1
  397. package/dist/assets/xstate.esm-BgUD33nl.js +0 -3
  398. package/src/authoring/scene-ui-layer.ts +0 -485
  399. package/src/authoring/ui-authoring-adapter.ts +0 -325
  400. package/src/authoring/ui-hierarchy-menu.ts +0 -40
  401. package/src/authoring/ui-inspector-sections.tsx +0 -156
  402. package/src/authoring/undo-timeline.ts +0 -145
  403. package/src/components/BottomPanel.tsx +0 -326
  404. package/src/components/BuildPanel.tsx +0 -455
  405. package/src/components/FolderTree.tsx +0 -179
  406. package/src/components/RightPanel.tsx +0 -166
  407. package/src/components/WorldContextMenu.tsx +0 -257
  408. package/src/components/asset-viewers/AssetViewer.tsx +0 -38
  409. package/src/ingest/games-react/react-rpg/src/ui/game-state.tsx +0 -129
  410. package/src/scene-ui-mode/active-scene-ui.ts +0 -58
  411. package/src/scene-ui-mode/scene-ui-palette-panel.tsx +0 -152
  412. package/src/scene-ui-mode/scene-ui-timeline-tab.tsx +0 -29
  413. package/src/scene-ui-mode/ui-prefab-dialog-host.tsx +0 -74
  414. package/src/scene-ui-mode/ui-prefab-hierarchy-menu.ts +0 -49
  415. package/src/scene-ui-mode/ui-prefab-io.ts +0 -76
  416. package/src/ui-editor/inspector.tsx +0 -563
  417. package/src/ui-editor/node-ops.ts +0 -266
  418. package/src/ui-editor/overlay.tsx +0 -380
  419. package/src/ui-editor/palette.tsx +0 -114
  420. package/src/ui-editor/react-store.ts +0 -78
  421. package/src/ui-editor/timeline-panel.tsx +0 -443
  422. package/src/ui-editor/ui-edit-store.ts +0 -552
  423. package/src/ui-editor/ui-prefab.ts +0 -95
  424. package/template/project.json +0 -9
  425. package/template/src/scripts/main.ts +0 -94
  426. package/template/src/ui/DefaultHud.tsx +0 -40
  427. package/template/src/ui/game-state.tsx +0 -37
  428. package/template/src/ui/mount-default-hud.tsx +0 -19
  429. package/template/src/ui/mount-ui.ts +0 -15
  430. package/vite-plugin-react-world-provider.ts +0 -81
@@ -1,94 +0,0 @@
1
- /**
2
- * Default game script.
3
- *
4
- * When launched from the editor, loads the scene the user is editing.
5
- * When running standalone, loads the default scene from disk.
6
- *
7
- * If the scene matches a known example, delegates to that example's setup
8
- * function so gameplay systems (movement, camera, AI, etc.) are registered.
9
- */
10
-
11
- import type { GameAdapter } from '@engine/adapter';
12
- import { fromSetup } from '@engine/adapter';
13
- import type { EditorPreview, GameCleanup, GameContext } from '@engine/runtime/types';
14
- import { loadScene, loadSceneFromData } from '@engine/scene/scene-loader';
15
- import { applyScenePostProcessing } from '@engine/setup/setup-renderer';
16
- import { mountDefaultHud } from '../ui/mount-default-hud';
17
- import { componentRegistry, gameComponents } from './registry';
18
-
19
- const DEFAULT_SCENE = 'scenes/default.vscn.json';
20
-
21
- /** Exported for true HMR — play-mode swaps prototypes on live instances. */
22
- export const components = gameComponents;
23
-
24
- // HMR boundary — play-mode.ts handles script hot-reloading via custom events.
25
- // This prevents Vite from triggering full page reloads when component files change.
26
- if (import.meta.hot) {
27
- import.meta.hot.accept();
28
- }
29
-
30
- export async function setup(ctx: GameContext, editor?: EditorPreview): Promise<GameCleanup> {
31
- // Generic fallback: load the scene with the full component registry
32
- // so ECS components are applied, but no gameplay systems are registered.
33
- const loadOpts = {
34
- scene: ctx.scene,
35
- rapierWorld: ctx.rapierWorld,
36
- rapier: ctx.rapier,
37
- physics: ctx.physics,
38
- audioListener: ctx.audio.listener,
39
- componentRegistry,
40
- componentManager: ctx.components,
41
- // Required for runtime fidelity (P1.4): particles need the batched renderer,
42
- // skybox/IBL needs the WebGLRenderer for PMREM.
43
- particleRenderer: ctx.particles.batchedRenderer,
44
- renderer: ctx.composer.getRenderer(),
45
- };
46
-
47
- // Set the INITIAL camera viewpoint BEFORE loading the scene, so that any
48
- // scene-defined camera or SceneCamera component (which run during loadScene)
49
- // takes precedence over the editor viewport camera. Generic scenes with no
50
- // camera component keep this viewpoint.
51
- if (editor?.viewportCamera) {
52
- ctx.camera.position.fromArray(editor.viewportCamera.position);
53
- ctx.camera.quaternion.fromArray(editor.viewportCamera.quaternion);
54
- } else {
55
- ctx.camera.position.set(3, 3, 3);
56
- ctx.camera.lookAt(0, 0.5, 0);
57
- }
58
-
59
- const sceneInstance = editor
60
- ? await loadSceneFromData(editor.sceneData, loadOpts)
61
- : await loadScene(DEFAULT_SCENE, loadOpts);
62
-
63
- // Apply scene-defined post-processing (bloom, vignette, DoF, …) if present.
64
- if (sceneInstance.environment?.postProcessing) {
65
- applyScenePostProcessing(
66
- ctx.composer,
67
- ctx.composer.getRenderer(),
68
- ctx.scene,
69
- ctx.camera,
70
- sceneInstance.environment,
71
- );
72
- }
73
-
74
- // Tick scene animations (GLTF mixers, etc.)
75
- ctx.systems.add('postPhysics', (dt) => sceneInstance.update(dt));
76
-
77
- // Default game HUD (C1, docs/AI-NATIVE-AUTHORING-IMPLEMENTATION-SPEC.md §9):
78
- // ordinary React mounted through the existing `mountUI(ctx.uiContainer, ...)`
79
- // overlay seam — see `../ui/DefaultHud.tsx`. Delete this line (and the HUD
80
- // files under `../ui/`) if your game doesn't want it; it is not required by
81
- // anything else in the template.
82
- const unmountHud = mountDefaultHud(ctx.uiContainer);
83
-
84
- return {
85
- dispose() {
86
- unmountHud();
87
- sceneInstance.dispose();
88
- },
89
- };
90
- }
91
-
92
- /** This example as a {@link GameAdapter} — first-party is one implementer of
93
- * the same interface an external game implements (no change to setup's body). */
94
- export const adapter: GameAdapter = fromSetup('default', setup);
@@ -1,40 +0,0 @@
1
- import { useState } from 'react';
2
- import { Button } from './Button';
3
- import { Panel } from './Panel';
4
-
5
- export interface DefaultHudProps {
6
- /** Panel title — plain prop, no VGAI binding-expression language. */
7
- title: string;
8
- }
9
-
10
- /**
11
- * The template's default game HUD (C1,
12
- * docs/AI-NATIVE-AUTHORING-IMPLEMENTATION-SPEC.md §9 "Make React the
13
- * Template Default" / §5.1 React UI Contract): ordinary React — a plain
14
- * `.tsx` component driven by props and a `useState` hook, normal inline
15
- * styling (no CSS files), no `UINode`/Scene UI binding language.
16
- *
17
- * Mounted through the existing overlay seam — `mountUI(ctx.uiContainer, ...)`
18
- * — by `mount-default-hud.tsx`, called from `../scripts/main.ts`'s `setup()`.
19
- * Replace or delete this component freely; it exists to prove (and
20
- * demonstrate) the React-HUD-by-default path, not to be load-bearing
21
- * gameplay UI.
22
- */
23
- export function DefaultHud({ title }: DefaultHudProps) {
24
- const [paused, setPaused] = useState(false);
25
-
26
- return (
27
- <Panel title={title} position="top-left">
28
- <div
29
- data-testid="default-hud-status"
30
- style={{ color: paused ? '#dd3d3d' : '#3ddc65', fontSize: 12 }}
31
- >
32
- {paused ? 'Paused' : 'Running'}
33
- </div>
34
- <Button
35
- label={paused ? 'Resume' : 'Pause'}
36
- onClick={() => setPaused((wasPaused) => !wasPaused)}
37
- />
38
- </Panel>
39
- );
40
- }
@@ -1,37 +0,0 @@
1
- /**
2
- * Thin re-export of the engine-published state bridge (D-Z5,
3
- * `docs/WAVE3-ADAPTER-PLUMBING-DESIGN.md` §D-Z5) — `GameProvider`/`useGame`/
4
- * `useGameState`/`useWorldObservation` now live canonically at
5
- * `@engine/react/game-state` (`packages/engine/src/react/game-state.tsx`,
6
- * the spec this file used to BE before D-Z5; see that module's doc comment
7
- * for the full implementation and the context-identity rule it documents).
8
- *
9
- * This file KEEPS EXISTING on purpose — every scaffolded project still has
10
- * `src/ui/game-state.tsx`, so:
11
- * - `packages/editor/vite-plugin-react-world-provider.ts`'s virtual module
12
- * (`export { GameProvider } from '/@fs/<root>/src/ui/game-state.tsx'`)
13
- * keeps working byte-for-byte — it re-exports from THIS file, which now
14
- * re-exports from the engine, but the file it points at (and the
15
- * identity `useGame()` resolves against) is unchanged.
16
- * - a react-world entry's own relative `import { useGameState } from
17
- * './ui/game-state'` keeps resolving here too — both routes still
18
- * converge on ONE module instance (this file), which itself resolves the
19
- * engine's `@engine/react/game-state` exactly once, so `createContext()`
20
- * runs exactly once per project. No context split.
21
- *
22
- * Adoption of the engine module is an OPTION, not a migration: existing
23
- * projects that already have their OWN full copy of this file (their own
24
- * `createContext`) are untouched by this change — only NEW projects
25
- * scaffolded from the template get this canonical re-export. A project that
26
- * wants a customized bridge can still replace this file with its own full
27
- * implementation, exactly as before.
28
- */
29
-
30
- export {
31
- GameProvider,
32
- requireWorldObserver,
33
- shallow,
34
- useGame,
35
- useGameState,
36
- useWorldObservation,
37
- } from '@engine/react/game-state';
@@ -1,19 +0,0 @@
1
- import { DefaultHud } from './DefaultHud';
2
- import { mountUI } from './mount-ui';
3
-
4
- /**
5
- * Mounts the template's default React HUD into the shared UI overlay
6
- * (`ctx.uiContainer` — `pointer-events:none`; `Panel`/`Button` inside opt
7
- * back in via `pointer-events:auto`, so the game canvas keeps receiving
8
- * pointer events everywhere except the HUD's own controls) and returns an
9
- * unmount function. Kept as its own `.tsx` module so `../scripts/main.ts` —
10
- * the game SETUP script, not a component — never needs JSX syntax itself.
11
- *
12
- * Usage (see `../scripts/main.ts`):
13
- * const unmountHud = mountDefaultHud(ctx.uiContainer);
14
- * // ... later, in the returned GameCleanup:
15
- * // dispose() { unmountHud(); sceneInstance.dispose(); }
16
- */
17
- export function mountDefaultHud(container: HTMLDivElement): () => void {
18
- return mountUI(container, <DefaultHud title="Game Status" />);
19
- }
@@ -1,15 +0,0 @@
1
- import type { ReactNode } from 'react';
2
- import { createRoot } from 'react-dom/client';
3
-
4
- /**
5
- * Mount a React element into a container div and return a cleanup function.
6
- *
7
- * Usage in example dispose():
8
- * const unmount = mountUI(ctx.uiContainer, <MyHUD />);
9
- * return { dispose: unmount };
10
- */
11
- export function mountUI(container: HTMLDivElement, element: ReactNode): () => void {
12
- const root = createRoot(container);
13
- root.render(element);
14
- return () => root.unmount();
15
- }
@@ -1,81 +0,0 @@
1
- /**
2
- * Vite plugin: a tiny synthetic ES module that STATICALLY re-exports
3
- * `GameProvider` from a given project's `src/ui/game-state.tsx`
4
- * (T6.2 slice 3 finding — see `packages/editor/src/adapter-resolver.ts`'s
5
- * `loadProjectGameProvider` doc comment for the full mechanism this closes).
6
- *
7
- * The problem this solves: `resolveDefaultReactAdapter` needs `GameProvider`
8
- * from the SAME `game-state.tsx` module instance a react world's entry
9
- * module's OWN static relative import (`import { useGameState } from
10
- * './src/ui/game-state'`) resolves to — otherwise `<GameProvider>`
11
- * and `useGameState`'s `useGame()` read/write DIFFERENT `createContext()`
12
- * objects and `useGame()` throws "no Game in context" even though
13
- * `<GameProvider>` genuinely wraps the tree. `adapter-resolver.ts` cannot
14
- * import `game-state.tsx` directly with a hand-built runtime `/@fs/` string
15
- * (`import(/* @vite-ignore *\/ computedPath)`) and expect it to land on the
16
- * SAME module: verified empirically (T6.2 slice 3's AC e2e, and this
17
- * plugin's own doc history) that Vite's dev server treats a raw dynamic
18
- * `/@fs/` fetch differently from its own rewrite of a STATIC relative
19
- * import found while transforming a `.tsx` file — the two request URLs
20
- * diverge (a query-string difference observed in practice), and since
21
- * browser ES module identity is per-exact-URL, that is enough to produce
22
- * TWO separate module instances even though both point at the identical
23
- * file on disk.
24
- *
25
- * The fix: make the resolver's own request for `GameProvider` go through
26
- * the SAME transform-time static-import rewrite Vite already applies to a
27
- * react-world entry's own relative import, by asking Vite to transform a
28
- * SYNTHETIC module whose body is nothing but a literal, static
29
- * `export { GameProvider } from '/@fs/<projectRoot>/src/ui/
30
- * game-state.tsx';` — that specifier is resolved by the SAME plugin
31
- * machinery (Vite's own `resolveId`) an entry module's static import goes
32
- * through, so both converge on the identical final module.
33
- */
34
- import type { Plugin } from 'vite';
35
-
36
- /** The dynamic-import-facing URL prefix (`?root=<projectRoot>` query). */
37
- export const REACT_WORLD_PROVIDER_PATH = '/__vgai-game-provider';
38
-
39
- const VIRTUAL_ID_PREFIX = '\0vgai-game-provider:';
40
-
41
- /** Build the dynamic-import specifier `adapter-resolver.ts` uses. */
42
- export function reactWorldProviderImportSpecifier(projectRoot: string): string {
43
- return `${REACT_WORLD_PROVIDER_PATH}?root=${encodeURIComponent(projectRoot)}`;
44
- }
45
-
46
- export function reactWorldProviderPlugin(): Plugin {
47
- return {
48
- name: 'vgai-react-world-provider',
49
- resolveId(id) {
50
- if (id.startsWith(REACT_WORLD_PROVIDER_PATH)) {
51
- const query = id.slice(REACT_WORLD_PROVIDER_PATH.length);
52
- return VIRTUAL_ID_PREFIX + query;
53
- }
54
- return undefined;
55
- },
56
- load(id) {
57
- if (!id.startsWith(VIRTUAL_ID_PREFIX)) return undefined;
58
- const query = id.slice(VIRTUAL_ID_PREFIX.length);
59
- const params = new URLSearchParams(query.startsWith('?') ? query.slice(1) : query);
60
- const projectRoot = params.get('root');
61
- if (!projectRoot) {
62
- throw new Error(
63
- `vgai-react-world-provider: missing \`?root=\` (got id "${id}") — ` +
64
- 'reactWorldProviderImportSpecifier() should always supply it.',
65
- );
66
- }
67
- // Windows roots arrive as 'C:\…' — no leading slash and backslashed.
68
- // Normalize to Vite's canonical '/@fs/C:/…' form; the bare-concat form
69
- // degenerates to '/@fsC:\…', which Vite cannot serve. POSIX roots
70
- // (leading '/') keep the original concat shape.
71
- const rootUrlPath = projectRoot.replace(/\\/g, '/');
72
- const gameStatePath = `/@fs${rootUrlPath.startsWith('/') ? '' : '/'}${rootUrlPath}/src/ui/game-state.tsx`;
73
- // A LITERAL static specifier — Vite's own import-analysis rewrites this
74
- // the SAME way it rewrites a react-world entry's own relative import
75
- // to the same file (both are static specifiers processed by the same
76
- // resolver at transform time), which is what makes the two converge on
77
- // one module instance.
78
- return `export { GameProvider } from ${JSON.stringify(gameStatePath)};\n`;
79
- },
80
- };
81
- }