@volter/editor-core 0.5.57

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 (719) hide show
  1. package/BUNDLED_NOTICES +1527 -0
  2. package/LICENSE +686 -0
  3. package/LICENSE-APACHE +202 -0
  4. package/NOTICE +18 -0
  5. package/README.md +24 -0
  6. package/dist/build/chunk-JS4D4XZ3.js +175 -0
  7. package/dist/build/chunk-JS4D4XZ3.js.map +7 -0
  8. package/dist/build/vite-plugin-product-contributions.js +100 -0
  9. package/dist/build/vite-plugin-product-contributions.js.map +7 -0
  10. package/dist/build/vite-plugin-shared-react.js +25 -0
  11. package/dist/build/vite-plugin-shared-react.js.map +7 -0
  12. package/dist/build/vite-plugin-shared-three.js +86 -0
  13. package/dist/build/vite-plugin-shared-three.js.map +7 -0
  14. package/dist/server/chunk-KMJC7AGO.js +98 -0
  15. package/dist/server/chunk-KMJC7AGO.js.map +7 -0
  16. package/dist/server/chunk-PSILUMGS.js +46 -0
  17. package/dist/server/chunk-PSILUMGS.js.map +7 -0
  18. package/dist/server/frame-proxy.js +255 -0
  19. package/dist/server/frame-proxy.js.map +7 -0
  20. package/dist/server/open-browser.js +53 -0
  21. package/dist/server/open-browser.js.map +7 -0
  22. package/dist/server/process-shutdown.js +127 -0
  23. package/dist/server/process-shutdown.js.map +7 -0
  24. package/dist/server/session-registry.js +141 -0
  25. package/dist/server/session-registry.js.map +7 -0
  26. package/dist/server/spawn-opener.js +11 -0
  27. package/dist/server/spawn-opener.js.map +7 -0
  28. package/dist/server/worktree-identity.js +11 -0
  29. package/dist/server/worktree-identity.js.map +7 -0
  30. package/dist-server/packaged.mjs +88816 -0
  31. package/package.json +118 -0
  32. package/scripts/build-plugins.mjs +14 -0
  33. package/scripts/build-server.mjs +26 -0
  34. package/scripts/build-session.mjs +9 -0
  35. package/server/account-credentials.ts +60 -0
  36. package/server/account-service.ts +1434 -0
  37. package/server/adapter-region-includes.ts +47 -0
  38. package/server/asset-catalog-v2.ts +175 -0
  39. package/server/asset-history-snapshots.ts +196 -0
  40. package/server/asset-ledger-store.ts +195 -0
  41. package/server/asset-library-routes.ts +1595 -0
  42. package/server/blender-wasm-artifact.ts +430 -0
  43. package/server/boot-timings.ts +106 -0
  44. package/server/canonical-path.ts +50 -0
  45. package/server/checkout-workspace-preflight.ts +349 -0
  46. package/server/cloud-asset-catalog.ts +158 -0
  47. package/server/coding-inference-launch.ts +237 -0
  48. package/server/collaboration-account-client.ts +202 -0
  49. package/server/collaboration-attribution.ts +122 -0
  50. package/server/collaboration-session.ts +934 -0
  51. package/server/comfyui-bridge.ts +248 -0
  52. package/server/console-ledger.ts +499 -0
  53. package/server/creation-site-transform.ts +304 -0
  54. package/server/creation-site-write.ts +648 -0
  55. package/server/data-file-serialize.ts +158 -0
  56. package/server/editor-brand-html.ts +72 -0
  57. package/server/editor-control-socket.ts +366 -0
  58. package/server/editor-server-options.ts +190 -0
  59. package/server/editor-server.ts +1483 -0
  60. package/server/editor-sse.ts +352 -0
  61. package/server/engine-provenance.ts +169 -0
  62. package/server/engine-source-restart.ts +117 -0
  63. package/server/frame-bridge.ts +115 -0
  64. package/server/frame-proxy.ts +490 -0
  65. package/server/frame-workbench.ts +259 -0
  66. package/server/frontend-handoff.ts +229 -0
  67. package/server/game-globals-shadow.ts +113 -0
  68. package/server/gameplay-session-retention.ts +149 -0
  69. package/server/gameplay-sessions.ts +123 -0
  70. package/server/generation-jobs.ts +201 -0
  71. package/server/generation-reconciler.ts +137 -0
  72. package/server/generative-execution-context.ts +59 -0
  73. package/server/git-workflow.ts +612 -0
  74. package/server/harness-chat-caller.ts +36 -0
  75. package/server/harness-chat-service.ts +1681 -0
  76. package/server/idle-shutdown.ts +170 -0
  77. package/server/js-profiling-policy.ts +52 -0
  78. package/server/launcher-settings.ts +84 -0
  79. package/server/local-asset-catalog.ts +410 -0
  80. package/server/managed-account-defaults.ts +22 -0
  81. package/server/mock-control-plane.ts +540 -0
  82. package/server/model-import-conversion.ts +345 -0
  83. package/server/native-credential-store.ts +162 -0
  84. package/server/open-browser.ts +118 -0
  85. package/server/packaged.ts +1192 -0
  86. package/server/play-stall.ts +126 -0
  87. package/server/process-shutdown.ts +218 -0
  88. package/server/product-presets.ts +55 -0
  89. package/server/project-build-artifact.ts +95 -0
  90. package/server/project-components.ts +100 -0
  91. package/server/project-dependency-invalidation.ts +114 -0
  92. package/server/project-file-scan.ts +235 -0
  93. package/server/project-hmr-files.ts +215 -0
  94. package/server/project-install-roots.ts +210 -0
  95. package/server/project-kinds.ts +71 -0
  96. package/server/project-mcp-servers.ts +82 -0
  97. package/server/project-module-freshness.ts +109 -0
  98. package/server/project-module-instance.ts +375 -0
  99. package/server/project-optimize-deps-entries.ts +827 -0
  100. package/server/project-output-writer.ts +679 -0
  101. package/server/project-package-origin.ts +63 -0
  102. package/server/project-root-surface.ts +831 -0
  103. package/server/project-scratch-path.ts +47 -0
  104. package/server/project-script-hmr.ts +619 -0
  105. package/server/project-serving-plugins.ts +236 -0
  106. package/server/project-tools.ts +653 -0
  107. package/server/project-validation.ts +250 -0
  108. package/server/project-verbs.ts +127 -0
  109. package/server/project-view.ts +52 -0
  110. package/server/project-watch.ts +1134 -0
  111. package/server/project-work-coordinator.ts +288 -0
  112. package/server/provider-credentials.ts +331 -0
  113. package/server/recent-projects-store.ts +98 -0
  114. package/server/redact-secrets.ts +71 -0
  115. package/server/repository-presence.ts +267 -0
  116. package/server/routes/account.ts +357 -0
  117. package/server/routes/agents.ts +60 -0
  118. package/server/routes/assets.ts +154 -0
  119. package/server/routes/build.ts +13 -0
  120. package/server/routes/collaboration.ts +595 -0
  121. package/server/routes/configurations.ts +419 -0
  122. package/server/routes/context.ts +264 -0
  123. package/server/routes/control-plane.ts +1811 -0
  124. package/server/routes/logs.ts +272 -0
  125. package/server/routes/project-identity.ts +302 -0
  126. package/server/routes/project-open.ts +429 -0
  127. package/server/routes/project-source.ts +686 -0
  128. package/server/routes/project-state.ts +383 -0
  129. package/server/routes/relay.ts +1029 -0
  130. package/server/routes/route-helpers.ts +29 -0
  131. package/server/routes/served-modules.ts +138 -0
  132. package/server/routes/session-tabs.ts +196 -0
  133. package/server/routes/settings.ts +121 -0
  134. package/server/routes/share-control.ts +486 -0
  135. package/server/routes/themes.ts +116 -0
  136. package/server/routes/tools.ts +230 -0
  137. package/server/routes/worktrees.ts +595 -0
  138. package/server/scoped-game-css.ts +461 -0
  139. package/server/server-utils.ts +1194 -0
  140. package/server/session-product.ts +112 -0
  141. package/server/session-registry.ts +230 -0
  142. package/server/share-claims.ts +138 -0
  143. package/server/share-host.ts +526 -0
  144. package/server/share-session-gateway.ts +1362 -0
  145. package/server/share-tunnel.ts +123 -0
  146. package/server/spawn-opener.ts +74 -0
  147. package/server/support/play/log-format.ts +76 -0
  148. package/server/support/play/session-record.ts +199 -0
  149. package/server/support/project/build-discipline.ts +718 -0
  150. package/server/support/project/inspection-node.ts +119 -0
  151. package/server/support/project/log-naming.ts +54 -0
  152. package/server/support/project/provenance.ts +290 -0
  153. package/server/support/project/run-name.ts +18 -0
  154. package/server/support/project/session-journal.ts +830 -0
  155. package/server/support/project/shared.ts +327 -0
  156. package/server/tab-bootstrap.ts +62 -0
  157. package/server/tab-heartbeat.ts +477 -0
  158. package/server/tab-lifecycle.ts +550 -0
  159. package/server/tab-presence.ts +1508 -0
  160. package/server/team-agent-mirror.ts +95 -0
  161. package/server/twin-auth.ts +138 -0
  162. package/server/vendored-lock-recorder.ts +968 -0
  163. package/server/worktree-identity.ts +121 -0
  164. package/server/worktree-management.ts +398 -0
  165. package/server/worktree-retention.d.mts +13 -0
  166. package/server/worktree-retention.mjs +205 -0
  167. package/src/EditorContext.tsx +169 -0
  168. package/src/account.ts +333 -0
  169. package/src/action-registry.ts +532 -0
  170. package/src/active-product.ts +74 -0
  171. package/src/active-project.ts +155 -0
  172. package/src/adapter-editor-config.ts +25 -0
  173. package/src/adapter-observation.ts +49 -0
  174. package/src/animation/stage-transport.ts +379 -0
  175. package/src/animation/three-clips-subject.ts +172 -0
  176. package/src/api/asset-library-wire.ts +45 -0
  177. package/src/api/assets.ts +365 -0
  178. package/src/api/base.ts +10 -0
  179. package/src/api/build.ts +99 -0
  180. package/src/api/git-wire.ts +56 -0
  181. package/src/api/logs.ts +92 -0
  182. package/src/api/project-identity.ts +74 -0
  183. package/src/api/project-open.ts +355 -0
  184. package/src/api/project-source.ts +162 -0
  185. package/src/api/project-state.ts +107 -0
  186. package/src/api/relay.ts +268 -0
  187. package/src/api/settings.ts +36 -0
  188. package/src/api/themes.ts +45 -0
  189. package/src/api/worktrees.ts +257 -0
  190. package/src/asset-compare-core.ts +171 -0
  191. package/src/asset-compare.ts +294 -0
  192. package/src/asset-editor-context.tsx +100 -0
  193. package/src/asset-events.ts +97 -0
  194. package/src/asset-inspector-actions.ts +87 -0
  195. package/src/asset-preview-framing.ts +357 -0
  196. package/src/asset-preview.ts +2802 -0
  197. package/src/asset-selection-viewer-registry.ts +113 -0
  198. package/src/asset-selection.ts +133 -0
  199. package/src/asset-workflow/asset-capabilities.ts +344 -0
  200. package/src/asset-workflow/asset-import-jobs.ts +106 -0
  201. package/src/asset-workflow/asset-ledger-backend.ts +126 -0
  202. package/src/asset-workflow/asset-ledger.ts +156 -0
  203. package/src/asset-workflow/asset-materialization-report.ts +140 -0
  204. package/src/asset-workflow/asset-pack-manifest.ts +320 -0
  205. package/src/asset-workflow/asset-types.ts +142 -0
  206. package/src/asset-workflow/asset-workflow-quality.ts +61 -0
  207. package/src/asset-workflow/audio-preview-player.ts +193 -0
  208. package/src/asset-workflow/audio-waveform.ts +22 -0
  209. package/src/asset-workflow/cloud-asset-client.ts +263 -0
  210. package/src/asset-workflow/folder-preview.ts +345 -0
  211. package/src/asset-workflow/hosted-asset-materialization.ts +236 -0
  212. package/src/asset-workflow/image-view-scale.ts +32 -0
  213. package/src/asset-workflow/import-contract.ts +124 -0
  214. package/src/asset-workflow/ledger-write-lock.ts +244 -0
  215. package/src/asset-workflow/model-inspection.ts +818 -0
  216. package/src/asset-workflow/pixi-spritesheet.ts +197 -0
  217. package/src/asset-workflow/preview-resource-lifetime.ts +44 -0
  218. package/src/asset-workflow/project-asset-commands.ts +23 -0
  219. package/src/asset-workflow/project-asset-health.ts +139 -0
  220. package/src/asset-workflow/project-asset-operations.ts +154 -0
  221. package/src/asset-workflow/project-asset-roots.ts +68 -0
  222. package/src/asset-workflow/project-content.ts +288 -0
  223. package/src/asset-workflow/project-source-index.ts +550 -0
  224. package/src/asset-workflow/thumbnail-system.ts +256 -0
  225. package/src/authoring/active-adapter.ts +199 -0
  226. package/src/authoring/active-systems.ts +422 -0
  227. package/src/authoring/adapter-key.ts +18 -0
  228. package/src/authoring/authoring-asset-url.ts +27 -0
  229. package/src/authoring/bootstrap-state.ts +49 -0
  230. package/src/authoring/boundary-authoring-adapter.ts +184 -0
  231. package/src/authoring/breakpoint-state.ts +43 -0
  232. package/src/authoring/canvas-scene-guides.ts +76 -0
  233. package/src/authoring/component-instance-root.ts +171 -0
  234. package/src/authoring/composite-authoring-adapter.ts +2110 -0
  235. package/src/authoring/consumer-actions.ts +520 -0
  236. package/src/authoring/css-numeric-style.ts +97 -0
  237. package/src/authoring/design-time-layers.ts +849 -0
  238. package/src/authoring/design-time-mount-registry.ts +235 -0
  239. package/src/authoring/design-time-settle.ts +343 -0
  240. package/src/authoring/edit-mode-authoring.ts +619 -0
  241. package/src/authoring/eyedropper-session.ts +60 -0
  242. package/src/authoring/instance-source-menu-register.ts +13 -0
  243. package/src/authoring/instance-source-menu.ts +135 -0
  244. package/src/authoring/layered-pick.ts +183 -0
  245. package/src/authoring/live-gesture-lock.ts +50 -0
  246. package/src/authoring/live-object-transform.ts +62 -0
  247. package/src/authoring/mount-failure-report.ts +154 -0
  248. package/src/authoring/mounted-root-subjects.ts +144 -0
  249. package/src/authoring/no-authoring-adapter.ts +55 -0
  250. package/src/authoring/null-inspection-subjects.tsx +75 -0
  251. package/src/authoring/object3d-document-persistence.ts +106 -0
  252. package/src/authoring/object3d-document-session-registry.ts +120 -0
  253. package/src/authoring/object3d-document-session.ts +1326 -0
  254. package/src/authoring/object3d-gesture-controller.ts +113 -0
  255. package/src/authoring/panel-authoring.ts +121 -0
  256. package/src/authoring/prefab-instance-inspector-section.tsx +237 -0
  257. package/src/authoring/prefab-instance-section-model.ts +55 -0
  258. package/src/authoring/project-authoring-session.ts +105 -0
  259. package/src/authoring/provenance.ts +99 -0
  260. package/src/authoring/quarks-particle-systems.ts +19 -0
  261. package/src/authoring/react-canvas-navigation.ts +255 -0
  262. package/src/authoring/react-design-canvas-style.ts +20 -0
  263. package/src/authoring/react-story-board.ts +937 -0
  264. package/src/authoring/selection-scope.ts +195 -0
  265. package/src/authoring/shell-document-ops.ts +169 -0
  266. package/src/authoring/shell-object3d-document-write-policy.ts +108 -0
  267. package/src/authoring/shell-viewport-policy.ts +48 -0
  268. package/src/authoring/source-object3d-authoring-adapter.ts +526 -0
  269. package/src/authoring/stories-scope.ts +35 -0
  270. package/src/authoring/story-board-chrome-fit.ts +107 -0
  271. package/src/authoring/story-board-presentation.ts +111 -0
  272. package/src/authoring/three-projection-core.ts +226 -0
  273. package/src/authoring/viewport-pick-context.ts +40 -0
  274. package/src/authoring/viewport-raycast.ts +240 -0
  275. package/src/authoring/viewport-tool-context.ts +73 -0
  276. package/src/authoring/world-canvas-viewport-state.ts +35 -0
  277. package/src/authoring/world-hidden-viewport.ts +152 -0
  278. package/src/authoring/world-pan-state.ts +198 -0
  279. package/src/authoring/world-session-state.ts +101 -0
  280. package/src/authoring/write-pipe.ts +173 -0
  281. package/src/availability-tick.ts +66 -0
  282. package/src/bitmap-label.ts +120 -0
  283. package/src/blender-tab-metrics.ts +161 -0
  284. package/src/board-open-actions.ts +20 -0
  285. package/src/boot-routing.ts +391 -0
  286. package/src/build-identity.ts +15 -0
  287. package/src/bytes-codec.ts +62 -0
  288. package/src/camera-authoring.ts +175 -0
  289. package/src/cancellation-reason.ts +58 -0
  290. package/src/canvas-preview-frames.ts +482 -0
  291. package/src/capture-camera-pose.ts +77 -0
  292. package/src/chrome-registry.ts +159 -0
  293. package/src/chrome-slot-registry.ts +91 -0
  294. package/src/collaboration-client.ts +264 -0
  295. package/src/collaboration-presence.ts +41 -0
  296. package/src/command-dispatch.ts +19 -0
  297. package/src/command-listener.ts +2743 -0
  298. package/src/command-registry.ts +70 -0
  299. package/src/component-board-registry.ts +205 -0
  300. package/src/component-states-registry.ts +200 -0
  301. package/src/components/AgentPresentationNotice.tsx +75 -0
  302. package/src/components/AlignToolbar.tsx +204 -0
  303. package/src/components/AppRoot.tsx +394 -0
  304. package/src/components/ApplicationMenus.tsx +415 -0
  305. package/src/components/AssetBrowser.tsx +2843 -0
  306. package/src/components/AssetEditorShell.tsx +216 -0
  307. package/src/components/AssetInspectorToolSection.tsx +124 -0
  308. package/src/components/BoardRulers.tsx +354 -0
  309. package/src/components/CameraInfo.tsx +81 -0
  310. package/src/components/CanvasSceneViewport.tsx +556 -0
  311. package/src/components/CapabilityCoverageSection.tsx +185 -0
  312. package/src/components/CenterDocuments.tsx +22 -0
  313. package/src/components/ChromeSlot.tsx +20 -0
  314. package/src/components/CodeView.tsx +470 -0
  315. package/src/components/CollaborationHeaderControl.css +74 -0
  316. package/src/components/CompactInspectorCard.tsx +190 -0
  317. package/src/components/CompactInspectorShell.tsx +39 -0
  318. package/src/components/ConsolePanel.css +55 -0
  319. package/src/components/ConsolePanel.tsx +270 -0
  320. package/src/components/DefaultEditorLayout.tsx +106 -0
  321. package/src/components/DocumentHeaderStrip.tsx +96 -0
  322. package/src/components/DocumentShelfRail.tsx +45 -0
  323. package/src/components/DocumentThumbnail.tsx +345 -0
  324. package/src/components/EditorLeaseGuard.tsx +372 -0
  325. package/src/components/ErrorBanner.tsx +123 -0
  326. package/src/components/FolderPreviewTile.tsx +159 -0
  327. package/src/components/GameHierarchy.tsx +3842 -0
  328. package/src/components/GameplaySessionTimeline.tsx +295 -0
  329. package/src/components/InspectionProjection.tsx +968 -0
  330. package/src/components/Inspector.tsx +233 -0
  331. package/src/components/InspectorCanvasPreview.tsx +35 -0
  332. package/src/components/InspectorFieldsSection.tsx +290 -0
  333. package/src/components/InspectorObjectPreview.tsx +57 -0
  334. package/src/components/InspectorStoriesSection.tsx +92 -0
  335. package/src/components/InspectorToolSection.tsx +96 -0
  336. package/src/components/InspectorTransformSection.tsx +245 -0
  337. package/src/components/LightExplorerPanel.tsx +433 -0
  338. package/src/components/MediaProperties.tsx +145 -0
  339. package/src/components/NonThreeAuthoringBootstrap.tsx +19 -0
  340. package/src/components/Object3DDocumentToolbar.css +100 -0
  341. package/src/components/Object3DDocumentToolbar.tsx +454 -0
  342. package/src/components/Object3DDocumentViewport.tsx +58 -0
  343. package/src/components/ProjectHeader.css +617 -0
  344. package/src/components/ProjectHeader.tsx +328 -0
  345. package/src/components/ProjectLayout.tsx +249 -0
  346. package/src/components/ReactCanvasControls.tsx +284 -0
  347. package/src/components/RootSelectionOverlay.tsx +3162 -0
  348. package/src/components/RootTextEditor.tsx +79 -0
  349. package/src/components/SaveStatus.tsx +70 -0
  350. package/src/components/StageHost.tsx +1954 -0
  351. package/src/components/StageOverlays.tsx +21 -0
  352. package/src/components/StartupErrorScreen.tsx +76 -0
  353. package/src/components/StartupLoadingScreen.tsx +65 -0
  354. package/src/components/StatsOverlay.tsx +78 -0
  355. package/src/components/SurfaceStateOverlay.tsx +24 -0
  356. package/src/components/ToolContributionSurfaces.tsx +65 -0
  357. package/src/components/ToolHost.tsx +370 -0
  358. package/src/components/ToolObject3DPreview.tsx +39 -0
  359. package/src/components/Toolbar.tsx +595 -0
  360. package/src/components/TransientHint.tsx +44 -0
  361. package/src/components/TransportStrip.tsx +174 -0
  362. package/src/components/VersionControlSection.tsx +470 -0
  363. package/src/components/VgaiLogo.css +83 -0
  364. package/src/components/VgaiLogo.tsx +35 -0
  365. package/src/components/ViewportControlsHint.tsx +60 -0
  366. package/src/components/ViewportFurniture.tsx +401 -0
  367. package/src/components/ViewportOverlay.tsx +145 -0
  368. package/src/components/ViewportOverlaysMenu.tsx +153 -0
  369. package/src/components/ViewportShadingMenu.tsx +300 -0
  370. package/src/components/ViewportViewMenu.tsx +101 -0
  371. package/src/components/WorkspaceDocumentSurface.tsx +204 -0
  372. package/src/components/WorkspaceUtilitySurface.tsx +22 -0
  373. package/src/components/WorktreeSwitcher.css +239 -0
  374. package/src/components/WorktreeSwitcher.tsx +890 -0
  375. package/src/components/account-documents.tsx +1162 -0
  376. package/src/components/asset-documents.tsx +812 -0
  377. package/src/components/asset-editor-persistence.ts +216 -0
  378. package/src/components/asset-selection-section.tsx +535 -0
  379. package/src/components/asset-thumbnails.tsx +312 -0
  380. package/src/components/asset-viewers/AudioViewer.tsx +201 -0
  381. package/src/components/asset-viewers/EntityModelDocument.tsx +122 -0
  382. package/src/components/asset-viewers/EnvironmentAssetDocument.tsx +440 -0
  383. package/src/components/asset-viewers/GenericJsonViewer.tsx +102 -0
  384. package/src/components/asset-viewers/ImageViewer.tsx +300 -0
  385. package/src/components/asset-viewers/JsonAssetDocument.tsx +93 -0
  386. package/src/components/asset-viewers/LiveModuleDocument.tsx +417 -0
  387. package/src/components/asset-viewers/LutAssetDocument.tsx +444 -0
  388. package/src/components/asset-viewers/ModelAssetDocument.tsx +105 -0
  389. package/src/components/asset-viewers/Object3DPreview.tsx +359 -0
  390. package/src/components/asset-viewers/OnlineAssetDetail.tsx +421 -0
  391. package/src/components/asset-viewers/PasteboardModuleDocument.tsx +67 -0
  392. package/src/components/asset-viewers/QuarksAssetDocument.tsx +526 -0
  393. package/src/components/asset-viewers/ShaderAssetDocument.tsx +743 -0
  394. package/src/components/asset-viewers/SourceAssetViewer.tsx +281 -0
  395. package/src/components/asset-viewers/SpritesheetSpriteView.tsx +102 -0
  396. package/src/components/asset-viewers/VideoViewer.tsx +101 -0
  397. package/src/components/asset-viewers/shader-source.ts +144 -0
  398. package/src/components/asset-workflow.css +731 -0
  399. package/src/components/board-guides.ts +150 -0
  400. package/src/components/compact-inspector.css +539 -0
  401. package/src/components/core-utilities.tsx +90 -0
  402. package/src/components/editor-notifications.css +40 -0
  403. package/src/components/engine-workspace.css +274 -0
  404. package/src/components/inspector-preview-section.tsx +238 -0
  405. package/src/components/inspector-property-grouping.ts +64 -0
  406. package/src/components/inspector-revert-label.ts +20 -0
  407. package/src/components/inspector-selection.ts +42 -0
  408. package/src/components/inspector-stories-gating.ts +171 -0
  409. package/src/components/inspector-transform-subject.ts +11 -0
  410. package/src/components/inspector-transform.ts +75 -0
  411. package/src/components/kind-documents.tsx +500 -0
  412. package/src/components/palette-action-publisher.tsx +140 -0
  413. package/src/components/primitives/DraftColorInput.tsx +74 -0
  414. package/src/components/product-shell.css +1829 -0
  415. package/src/components/project-tool-documents.tsx +410 -0
  416. package/src/components/scene-documents.tsx +223 -0
  417. package/src/components/stage-keyboard.tsx +37 -0
  418. package/src/components/stage-overlay-set.tsx +107 -0
  419. package/src/components/stage-presence-markers.ts +478 -0
  420. package/src/components/standard-viewport-dressing.ts +417 -0
  421. package/src/components/status-contributions.tsx +403 -0
  422. package/src/components/tool-documents.tsx +309 -0
  423. package/src/components/tool-schema-form.tsx +262 -0
  424. package/src/components/use-after-paint.ts +41 -0
  425. package/src/components/use-project-image-assets.ts +86 -0
  426. package/src/components/viewport-header-controls.css +90 -0
  427. package/src/components/viewport-surface-status.tsx +55 -0
  428. package/src/components/workspace-history.ts +32 -0
  429. package/src/components/workspace-static-panel-registry.tsx +152 -0
  430. package/src/components/workspace-surfaces.css +621 -0
  431. package/src/components/world-documents.tsx +586 -0
  432. package/src/components/world-overlay-gestures.ts +1694 -0
  433. package/src/composite-screenshot.ts +1641 -0
  434. package/src/console-sync.ts +131 -0
  435. package/src/constraint-helper.ts +338 -0
  436. package/src/content-entry-source-registry.ts +184 -0
  437. package/src/coverage/authoring-seam-evidence.ts +300 -0
  438. package/src/coverage/canvas-reveal.ts +192 -0
  439. package/src/coverage/design-time-surfaces.ts +101 -0
  440. package/src/coverage/live-seam-evidence.ts +11 -0
  441. package/src/coverage/ontology-invariants.ts +466 -0
  442. package/src/coverage/session-vitals.ts +501 -0
  443. package/src/coverage/system-seam-evidence.ts +72 -0
  444. package/src/crash-null-boundary.ts +36 -0
  445. package/src/creation-site-edit.ts +1479 -0
  446. package/src/creation-site-registry.ts +160 -0
  447. package/src/delegate-harness-registry.ts +143 -0
  448. package/src/document-context-registry.ts +177 -0
  449. package/src/document-open-registry.ts +200 -0
  450. package/src/document-preview-source.ts +20 -0
  451. package/src/document-renderer-session.ts +138 -0
  452. package/src/editor-api.ts +46 -0
  453. package/src/editor-chrome-capture.ts +139 -0
  454. package/src/editor-commands.ts +164 -0
  455. package/src/editor-console.ts +563 -0
  456. package/src/editor-current-view.ts +82 -0
  457. package/src/editor-document-probe.ts +881 -0
  458. package/src/editor-git-client.ts +115 -0
  459. package/src/editor-host-door.ts +462 -0
  460. package/src/editor-hotkeys.ts +842 -0
  461. package/src/editor-lease-view.ts +39 -0
  462. package/src/editor-lease.ts +415 -0
  463. package/src/editor-mode.ts +19 -0
  464. package/src/editor-notifications.ts +140 -0
  465. package/src/editor-presence.ts +563 -0
  466. package/src/editor-presentation-activity.ts +50 -0
  467. package/src/editor-presentation-notice.ts +42 -0
  468. package/src/editor-runtime.tsx +145 -0
  469. package/src/editor-server-response.ts +86 -0
  470. package/src/editor-session-attribution.ts +75 -0
  471. package/src/editor-session-mode.ts +54 -0
  472. package/src/editor-shell-store.ts +1304 -0
  473. package/src/editor-state-facets.ts +74 -0
  474. package/src/editor-styles.css +33 -0
  475. package/src/editor-view-presentation.ts +810 -0
  476. package/src/editor-viewport.ts +5302 -0
  477. package/src/entity-lod.ts +31 -0
  478. package/src/entity-object.ts +91 -0
  479. package/src/files/file-provider.ts +62 -0
  480. package/src/files/project-files.ts +264 -0
  481. package/src/finders/index.ts +136 -0
  482. package/src/finders/scenes-from-entrypoint-selection.ts +387 -0
  483. package/src/frame/bridge.tsx +1408 -0
  484. package/src/frame/product.ts +77 -0
  485. package/src/gameplay-dom-recording.ts +319 -0
  486. package/src/gameplay-export-state.ts +14 -0
  487. package/src/gameplay-replay.ts +417 -0
  488. package/src/gameplay-session-time.ts +9 -0
  489. package/src/gameplay-sessions.ts +204 -0
  490. package/src/harness-chat-types.ts +253 -0
  491. package/src/hierarchy-component-marks.ts +298 -0
  492. package/src/hierarchy-drop.ts +91 -0
  493. package/src/hierarchy-expansion-state.ts +80 -0
  494. package/src/hierarchy-header-slot.ts +52 -0
  495. package/src/hierarchy-internals.ts +197 -0
  496. package/src/hierarchy-kind-icon.ts +217 -0
  497. package/src/hierarchy-mark-reader.ts +73 -0
  498. package/src/hierarchy-menu-registry.ts +67 -0
  499. package/src/hierarchy-node-rows.ts +307 -0
  500. package/src/hierarchy-panel-view.ts +280 -0
  501. package/src/hierarchy-projection.ts +76 -0
  502. package/src/hierarchy-row-cache.ts +243 -0
  503. package/src/hierarchy-row-model.ts +308 -0
  504. package/src/hierarchy-rows.ts +11 -0
  505. package/src/hierarchy-walk.ts +86 -0
  506. package/src/history/editor-session.ts +25 -0
  507. package/src/history/history-commands.ts +147 -0
  508. package/src/history/history-delegate.ts +163 -0
  509. package/src/history/history-limit-notices.ts +43 -0
  510. package/src/history/history-service.ts +1173 -0
  511. package/src/history/persistence-coordinator.ts +35 -0
  512. package/src/history/project-file-history.ts +386 -0
  513. package/src/history/project-root-history-backends.ts +139 -0
  514. package/src/history/resource-registry.ts +209 -0
  515. package/src/history/snapshot-store.ts +103 -0
  516. package/src/history/source-history-backend.ts +546 -0
  517. package/src/history/types.ts +124 -0
  518. package/src/hmr-registration-group.ts +67 -0
  519. package/src/hmr-stable-react-context.ts +23 -0
  520. package/src/hotkeys.ts +188 -0
  521. package/src/inference-diagnostics.ts +69 -0
  522. package/src/initial-project.ts +80 -0
  523. package/src/inspection/active-subject.ts +578 -0
  524. package/src/inspection/active-surface.ts +142 -0
  525. package/src/inspection/compose.ts +1064 -0
  526. package/src/inspection/display.ts +170 -0
  527. package/src/inspection/document-subject.ts +109 -0
  528. package/src/inspection/game-subject.ts +85 -0
  529. package/src/inspection/model.ts +542 -0
  530. package/src/inspection/null-subject.ts +115 -0
  531. package/src/inspection/serialize.ts +357 -0
  532. package/src/inspection/use-active-inspection.ts +180 -0
  533. package/src/inspector-presentation.ts +201 -0
  534. package/src/inspector-section-registry.ts +221 -0
  535. package/src/instance-source-actions.ts +163 -0
  536. package/src/instanced-presentation.ts +164 -0
  537. package/src/js-heap.ts +71 -0
  538. package/src/key-actions.ts +91 -0
  539. package/src/keymap-presets.ts +401 -0
  540. package/src/layout-policy.ts +31 -0
  541. package/src/learn-links.ts +73 -0
  542. package/src/light-explorer-model.ts +134 -0
  543. package/src/live-canvas-frame.ts +55 -0
  544. package/src/live-document.ts +279 -0
  545. package/src/live-module-source.ts +230 -0
  546. package/src/live-session-registry.ts +220 -0
  547. package/src/live-transition.ts +633 -0
  548. package/src/manifest-project.ts +107 -0
  549. package/src/model-thumbnail.ts +523 -0
  550. package/src/native-selection-style.ts +202 -0
  551. package/src/object3d-document-write-policy.ts +137 -0
  552. package/src/packaged-runtime.ts +108 -0
  553. package/src/palettes/maya.palette.json +57 -0
  554. package/src/palettes/substance.palette.json +57 -0
  555. package/src/pasteboard-module.ts +81 -0
  556. package/src/performance-profiler.ts +367 -0
  557. package/src/performance-sources.ts +69 -0
  558. package/src/play-boot-phase.ts +145 -0
  559. package/src/presentation-surface.ts +248 -0
  560. package/src/project-adapter.ts +1143 -0
  561. package/src/project-asset-refresh.ts +26 -0
  562. package/src/project-declaration-refresh.ts +31 -0
  563. package/src/project-local-state.ts +118 -0
  564. package/src/project-manager.ts +243 -0
  565. package/src/project-module-changes.ts +163 -0
  566. package/src/project-module-split.ts +266 -0
  567. package/src/project-provenance.ts +115 -0
  568. package/src/project-ready.ts +42 -0
  569. package/src/project-session-reset.ts +67 -0
  570. package/src/project-shape.ts +68 -0
  571. package/src/project-tool-discovery.ts +66 -0
  572. package/src/project-tools.ts +107 -0
  573. package/src/project-work-types.ts +149 -0
  574. package/src/projection/three.ts +898 -0
  575. package/src/projection/types.ts +44 -0
  576. package/src/readiness.ts +113 -0
  577. package/src/reflection-probe-helper.ts +142 -0
  578. package/src/reported-play-state.ts +90 -0
  579. package/src/resolve-relative-specifier.ts +33 -0
  580. package/src/scene-document-plan.ts +315 -0
  581. package/src/scene-framing.ts +315 -0
  582. package/src/scene-live-open.ts +210 -0
  583. package/src/scene-view-fog.ts +89 -0
  584. package/src/scoped-game-css.ts +152 -0
  585. package/src/session-orphan-record.ts +193 -0
  586. package/src/session-tombstone.ts +126 -0
  587. package/src/settings/settings-provider.ts +82 -0
  588. package/src/settings-store.ts +345 -0
  589. package/src/shared-view-restore.ts +42 -0
  590. package/src/shell-store-door.ts +45 -0
  591. package/src/source-conflict.ts +122 -0
  592. package/src/spatial-handle-visuals.ts +332 -0
  593. package/src/stage-context.ts +341 -0
  594. package/src/stage-store-registry.ts +63 -0
  595. package/src/stale-chunk-recovery.ts +34 -0
  596. package/src/state-report-deferral.ts +73 -0
  597. package/src/storage/host-files-storage.ts +97 -0
  598. package/src/storage/http-storage.ts +174 -0
  599. package/src/storage/index.ts +75 -0
  600. package/src/storage/mem-storage.ts +149 -0
  601. package/src/storage/path-lock.ts +44 -0
  602. package/src/storage/paths.ts +26 -0
  603. package/src/storage/types.ts +116 -0
  604. package/src/stories/StoryComponentThumbnail.tsx +184 -0
  605. package/src/stories/StoryPreviewMount.tsx +306 -0
  606. package/src/stories/component-content-source.tsx +106 -0
  607. package/src/stories/component-states-source.ts +78 -0
  608. package/src/stories/compose-project-stories.ts +255 -0
  609. package/src/stories/pixi-story-model.ts +30 -0
  610. package/src/stories/prefabs-finder.ts +54 -0
  611. package/src/stories/prefabs-from-stories.ts +182 -0
  612. package/src/stories/project-story-discovery.ts +78 -0
  613. package/src/stories/project-story-regions.ts +24 -0
  614. package/src/stories/story-actions.ts +54 -0
  615. package/src/stories/story-capture-command.ts +124 -0
  616. package/src/stories/story-capture.ts +584 -0
  617. package/src/stories/story-declared-medium.ts +126 -0
  618. package/src/stories/story-discovery.ts +176 -0
  619. package/src/stories/story-document-openers.ts +36 -0
  620. package/src/stories/story-dom-runtime.ts +78 -0
  621. package/src/stories/story-grouping.ts +111 -0
  622. package/src/stories/story-lane.ts +88 -0
  623. package/src/stories/story-mount-turn.ts +27 -0
  624. package/src/stories/story-opener.ts +260 -0
  625. package/src/stories/story-pixi-preview.ts +408 -0
  626. package/src/stories/story-presentation.ts +215 -0
  627. package/src/stories/story-registry.ts +517 -0
  628. package/src/stories/story-three-preview.ts +807 -0
  629. package/src/stories/three-story-model.ts +96 -0
  630. package/src/story-three-preview-runtime.ts +56 -0
  631. package/src/surface-keyboard.ts +112 -0
  632. package/src/surface-state.ts +124 -0
  633. package/src/tab-bootstrap.js +628 -0
  634. package/src/tab-census.ts +198 -0
  635. package/src/tab-lifecycle-client.ts +196 -0
  636. package/src/theme-library.ts +844 -0
  637. package/src/theme-preference.ts +378 -0
  638. package/src/theme.css +3437 -0
  639. package/src/three-viewport/bone-selection-highlight.ts +119 -0
  640. package/src/three-viewport/camera-fit.ts +41 -0
  641. package/src/three-viewport/interactive-renderer.ts +132 -0
  642. package/src/three-viewport/selection-brackets.ts +310 -0
  643. package/src/three-viewport/selection-outline.ts +183 -0
  644. package/src/three-viewport/skeleton-helper.ts +61 -0
  645. package/src/three-viewport/source-color.ts +167 -0
  646. package/src/three-viewport/studio-environment.ts +96 -0
  647. package/src/three-viewport-presentation.ts +23 -0
  648. package/src/tool-contribution-play.ts +74 -0
  649. package/src/tool-loader.ts +1798 -0
  650. package/src/transform-mode-request.ts +57 -0
  651. package/src/transient-hint.ts +78 -0
  652. package/src/trigger-volume-helper.ts +116 -0
  653. package/src/ui-source/adapter-region-includes.ts +241 -0
  654. package/src/ui-source/ensure-import.ts +132 -0
  655. package/src/ui-source/file-region-resolver.ts +302 -0
  656. package/src/ui-source/inspect.ts +775 -0
  657. package/src/ui-source/oid-transform.ts +1845 -0
  658. package/src/ui-source/plan-csf-story.ts +196 -0
  659. package/src/ui-source/plan-extract-component.ts +421 -0
  660. package/src/ui-source/plan-fork-component.ts +621 -0
  661. package/src/ui-source/plan-named-style.ts +95 -0
  662. package/src/ui-source/plan-source-edit.ts +353 -0
  663. package/src/ui-source/r3f-contract-resolver.ts +327 -0
  664. package/src/ui-source/r3f-diagnostic-index.ts +165 -0
  665. package/src/ui-source/r3f-environment-binding.ts +133 -0
  666. package/src/ui-source/r3f-joint-binding.ts +251 -0
  667. package/src/ui-source/r3f-lod-binding.ts +91 -0
  668. package/src/ui-source/r3f-particle-binding.ts +235 -0
  669. package/src/ui-source/r3f-physics-binding.ts +483 -0
  670. package/src/ui-source/r3f-project-contracts.ts +444 -0
  671. package/src/ui-source/relative-import-specifier.ts +34 -0
  672. package/src/ui-source/reparent-guard.ts +544 -0
  673. package/src/ui-source/source-edit-request.ts +97 -0
  674. package/src/ui-source/source-write-backend.ts +618 -0
  675. package/src/ui-source/syntactic-prop-specs.ts +296 -0
  676. package/src/ui-source/tier-source-write-backend.ts +279 -0
  677. package/src/ui-source/ts-ast.ts +171 -0
  678. package/src/ui-source/utility-class-support.ts +169 -0
  679. package/src/ui-source/write-component-default.ts +133 -0
  680. package/src/ui-source/writer.ts +1989 -0
  681. package/src/viewport-activation-timings.ts +840 -0
  682. package/src/viewport-authoring-policy.ts +186 -0
  683. package/src/viewport-controls-hint.ts +57 -0
  684. package/src/viewport-door.ts +237 -0
  685. package/src/viewport-shading-boundary.ts +12 -0
  686. package/src/vite-error-surface.ts +141 -0
  687. package/src/wait-until.ts +37 -0
  688. package/src/workspace-areas.ts +156 -0
  689. package/src/workspace-aux-commands.ts +11 -0
  690. package/src/workspace-available-documents.ts +127 -0
  691. package/src/workspace-core-utilities.ts +31 -0
  692. package/src/workspace-document-ids.ts +59 -0
  693. package/src/workspace-document-registry.ts +612 -0
  694. package/src/workspace-document-restore.ts +145 -0
  695. package/src/workspace-host-commands.ts +141 -0
  696. package/src/workspace-persistence-gate.ts +40 -0
  697. package/src/workspace-play-utilities.ts +44 -0
  698. package/src/workspace-presets.ts +425 -0
  699. package/src/workspace-regions.ts +294 -0
  700. package/src/workspace-state-persistence.ts +536 -0
  701. package/src/workspace-static-panels.ts +73 -0
  702. package/src/workspace-status-registry.ts +121 -0
  703. package/src/workspace-style.ts +239 -0
  704. package/src/workspace-utility-commands.ts +74 -0
  705. package/src/workspace-utility-registry.ts +263 -0
  706. package/src/workspace-viewport-rect.ts +97 -0
  707. package/src/world-adoption.ts +115 -0
  708. package/src/world-document-routing.ts +104 -0
  709. package/vite-plugin-creation-site-write.ts +184 -0
  710. package/vite-plugin-creation-site.ts +80 -0
  711. package/vite-plugin-game-static.ts +303 -0
  712. package/vite-plugin-module-doorways.ts +336 -0
  713. package/vite-plugin-product-contributions.ts +197 -0
  714. package/vite-plugin-project-game-static.ts +125 -0
  715. package/vite-plugin-project-jsx-js.ts +65 -0
  716. package/vite-plugin-project-root-absolute-assets.ts +359 -0
  717. package/vite-plugin-shared-react.ts +420 -0
  718. package/vite-plugin-shared-three.ts +203 -0
  719. package/vite-plugin-ui-oid.ts +2106 -0
@@ -0,0 +1,115 @@
1
+ /**
2
+ * THE WORKTREE'S GIT WIRE — status, stage, checkpoint, publish, pull request.
3
+ *
4
+ * It lived in `share-control-client.ts` because the editor server answers
5
+ * these on the same `/__editor/share-control` prefix, and one file spelling
6
+ * one prefix looked like one subject. It is not: moving a project's changes
7
+ * into another checkout is what the worktree board does whether or not a
8
+ * session is shared, and the only surface that ever called these is
9
+ * `components/VersionControlSection.tsx`. The SHARE half of that file is the
10
+ * collaboration lane's and lives in `@vgai/collaboration`.
11
+ *
12
+ * The status shape is declared ONCE, in `api/git-wire.ts`, which the editor
13
+ * server and the `vgai` CLI read too.
14
+ */
15
+
16
+ import { assertEditorServerAnswered, editorServerJson } from './editor-server-response';
17
+
18
+ export type { GitWorkflowStatus as EditorGitStatus } from './api/git-wire';
19
+
20
+ import type { GitWorkflowStatus as EditorGitStatus } from './api/git-wire';
21
+
22
+ async function request<T>(path: string, init?: RequestInit): Promise<T> {
23
+ const response = await fetch(`/__editor/share-control${path}`, {
24
+ ...init,
25
+ headers: { ...(init?.body ? { 'Content-Type': 'application/json' } : {}), ...init?.headers },
26
+ });
27
+ // A 204 carries no body and so no content type; every other answer on this
28
+ // route is JSON, including its failures. These routes are reachable through
29
+ // a TUNNEL, which is exactly where a page fallback stands in for the editor
30
+ // server — a git operation must never read one as success.
31
+ if (response.status !== 204) {
32
+ assertEditorServerAnswered(response, `Git request ${path} failed`);
33
+ }
34
+ if (!response.ok) {
35
+ const body = (await response.json().catch(() => null)) as { error?: unknown } | null;
36
+ throw new Error(
37
+ typeof body?.error === 'string' ? body.error : `Git request failed (${response.status}).`,
38
+ );
39
+ }
40
+ return (response.status === 204 ? undefined : await response.json()) as T;
41
+ }
42
+
43
+ export async function editorGitStatus(): Promise<EditorGitStatus> {
44
+ const response = await fetch('/__editor/git/status');
45
+ return editorServerJson<EditorGitStatus>(response, 'Git status failed');
46
+ }
47
+
48
+ export function checkpointEditorGit(input: {
49
+ paths: readonly string[];
50
+ message: string;
51
+ }): Promise<EditorGitStatus> {
52
+ return request('/git/checkpoint', { method: 'POST', body: JSON.stringify(input) });
53
+ }
54
+
55
+ export function publishEditorGit(signal?: AbortSignal): Promise<EditorGitStatus> {
56
+ return request('/git/publish', { method: 'POST', ...(signal ? { signal } : {}) });
57
+ }
58
+
59
+ export function stageEditorGit(input: {
60
+ path: string;
61
+ staged: boolean;
62
+ hunkId?: string;
63
+ }): Promise<EditorGitStatus> {
64
+ return request('/git/stage', { method: 'POST', body: JSON.stringify(input) });
65
+ }
66
+
67
+ export function fetchEditorGit(signal?: AbortSignal): Promise<EditorGitStatus> {
68
+ return request('/git/fetch', { method: 'POST', ...(signal ? { signal } : {}) });
69
+ }
70
+
71
+ export function updateEditorGit(signal?: AbortSignal): Promise<EditorGitStatus> {
72
+ return request('/git/update', { method: 'POST', ...(signal ? { signal } : {}) });
73
+ }
74
+
75
+ export function resolveEditorGitRebase(action: 'continue' | 'abort'): Promise<EditorGitStatus> {
76
+ return request('/git/rebase', { method: 'POST', body: JSON.stringify({ action }) });
77
+ }
78
+
79
+ export function checkEditorGitReadiness(): Promise<{
80
+ ready: boolean;
81
+ reasons: string[];
82
+ validation: string | null;
83
+ status: EditorGitStatus;
84
+ }> {
85
+ return request('/git/readiness', { method: 'POST' });
86
+ }
87
+
88
+ export function createEditorPullRequest(input: {
89
+ title: string;
90
+ body?: string;
91
+ }): Promise<{ url: string; status: EditorGitStatus }> {
92
+ return request('/git/pull-request', { method: 'POST', body: JSON.stringify(input) });
93
+ }
94
+
95
+ export function editorPullRequestStatus(): Promise<{
96
+ available: boolean;
97
+ url?: string;
98
+ state?: string;
99
+ draft?: boolean;
100
+ mergeState?: string;
101
+ reviewDecision?: string;
102
+ checks?: { total: number; pending: number; failed: number; passed: number };
103
+ reason?: string;
104
+ }> {
105
+ return request('/git/pull-request/status');
106
+ }
107
+
108
+ export function mergeEditorPullRequest(
109
+ signal?: AbortSignal,
110
+ ): Promise<{ url: string; merged: boolean }> {
111
+ return request('/git/pull-request/merge', {
112
+ method: 'POST',
113
+ ...(signal ? { signal } : {}),
114
+ });
115
+ }
@@ -0,0 +1,462 @@
1
+ /**
2
+ * THE HOST DOOR, installed: what `@volter/editor-sdk/host` hands a package's
3
+ * contribution is this editor's own session state — the inspected system
4
+ * adapters (`authoring/active-systems.ts`), the shared availability tick and
5
+ * the dock's utility reveal. The SDK owns the door's SHAPE; this module is
6
+ * the one place the editor fills it (ARCHITECTURE-CORE §The workbench,
7
+ * "direction": the host imports no package; a package imports the SDK).
8
+ */
9
+ import { type EditorHostOutput, registerEditorHost } from '@volter/editor-sdk/host';
10
+ import type * as THREE from 'three';
11
+ import { onProjectChange } from './active-project';
12
+ import { stageTransport, subscribeStageTransports } from './animation/stage-transport';
13
+ import {
14
+ activeAudioVersion,
15
+ getInspectedAudio,
16
+ getInspectedNetworking,
17
+ getInspectedSystems,
18
+ subscribeActiveAudio,
19
+ subscribeActiveNavigation,
20
+ subscribeActiveNetworking,
21
+ } from './authoring/active-systems';
22
+ import { activeDocumentSourcePath, activeSaveDestination } from './authoring/shell-document-ops';
23
+ import { availabilityTickVersion, subscribeAvailabilityTick } from './availability-tick';
24
+ import { setBlenderCallMeter } from './blender-tab-metrics';
25
+ import { onCommandDispatched } from './command-dispatch';
26
+ import { openToolDocument } from './components/tool-documents';
27
+ import { onSessionSample } from './coverage/session-vitals';
28
+ import {
29
+ documentContextFor,
30
+ notifyDocumentContextChanged,
31
+ waitForDocumentContext,
32
+ } from './document-context-registry';
33
+ import { openRegisteredDocumentAsync } from './document-open-registry';
34
+ import { editorConsole } from './editor-console';
35
+ import { notify } from './editor-notifications';
36
+ import { registerEditorStateFacet } from './editor-state-facets';
37
+ import { setFilesProvider } from './files/file-provider';
38
+ import { projectFiles } from './files/project-files';
39
+ import {
40
+ onHistoryElement,
41
+ recordedHistoryElements,
42
+ setHistoryDelegate,
43
+ setHistoryDocumentResolver,
44
+ subscribeHistoryDelegate,
45
+ } from './history/history-delegate';
46
+ import {
47
+ invokeKeyAction,
48
+ keyActionsVersion,
49
+ registeredKeyActions,
50
+ subscribeKeyActions,
51
+ } from './key-actions';
52
+ import {
53
+ activeEditorKeymap,
54
+ editorKeymaps,
55
+ keymapTable,
56
+ subscribeEditorKeymap,
57
+ } from './keymap-presets';
58
+ import {
59
+ acquireLiveDocument,
60
+ liveDocumentContainer,
61
+ liveDocumentOpen,
62
+ registerLiveDocumentContent,
63
+ releaseLiveDocument,
64
+ releaseLiveDocumentContainer,
65
+ setLiveDocumentContainer,
66
+ } from './live-document';
67
+ import {
68
+ anyLiveSessionMounted,
69
+ anyLiveSessionPlaying,
70
+ dispatchLiveCommand,
71
+ liveAuthoringRefusal,
72
+ liveCoverage,
73
+ liveFrameCanvas,
74
+ liveRestartRequired,
75
+ liveRunWindow,
76
+ liveScenes,
77
+ liveSessionsVersion,
78
+ liveSurface,
79
+ notifyLiveSessionsChanged,
80
+ registerLiveSession,
81
+ restartLiveSession,
82
+ snapshotLiveFrame,
83
+ subscribeLiveSessions,
84
+ } from './live-session-registry';
85
+ import {
86
+ beginLiveTransition,
87
+ endPlayTransition,
88
+ notifyPlayTransitionGameReady,
89
+ onPlayTransitionSettled,
90
+ playTransitionPhase,
91
+ } from './live-transition';
92
+ import {
93
+ projectLocalSection,
94
+ projectLocalStateReady,
95
+ writeProjectLocalSection,
96
+ } from './project-local-state';
97
+ import { getCurrentProject } from './project-manager';
98
+ import { onProjectReady } from './project-ready';
99
+ import { projectMounts } from './project-shape';
100
+ import { onSessionEndedChange } from './session-tombstone';
101
+ import { setSettingsProvider, subscribeSettingsProvider } from './settings/settings-provider';
102
+ import { getSetting, inspectSetting, setSetting, subscribeSettings } from './settings-store';
103
+ import { onShellStoreChange, shellStoreForHost } from './shell-store-door';
104
+ import { focusedStageContext } from './stage-context';
105
+ import {
106
+ onViewportFrame,
107
+ onViewportStages,
108
+ presentViewportRoots,
109
+ setViewportHelper,
110
+ viewportRig,
111
+ viewportStages,
112
+ } from './viewport-door';
113
+ import { GAME_DOCUMENT_ID } from './workspace-document-ids';
114
+ import {
115
+ activeWorkspaceDocument,
116
+ activeWorkspaceDocumentId,
117
+ subscribeWorkspaceDocuments,
118
+ workspaceDocumentRegistryVersion,
119
+ } from './workspace-document-registry';
120
+ import { showWorkspaceUtility } from './workspace-host-commands';
121
+
122
+ /**
123
+ * THE ACTIVE DOCUMENT'S OWN INTERACTION MODE, if it has one.
124
+ *
125
+ * A mode is a fact about a DOCUMENT — Blender's object/edit/pose/sculpt belongs
126
+ * to the thing being edited, not to the shell — so the document answers it, on
127
+ * the context it already publishes rather than through a registration of its
128
+ * own. Structural, never `instanceof`: a contributed document's context is an
129
+ * adapter-native object the host must not name (`documents.context` hands it
130
+ * back as `unknown`), so the shape it needs is checked here.
131
+ */
132
+ function activeStageMode(): string | null {
133
+ const documentId = activeWorkspaceDocumentId();
134
+ if (documentId === null) return null;
135
+ const context = documentContextFor(documentId);
136
+ if (typeof context !== 'object' || context === null) return null;
137
+ const read = (context as { stageMode?: unknown }).stageMode;
138
+ if (typeof read !== 'function') return null;
139
+ const mode: unknown = read.call(context);
140
+ return typeof mode === 'string' ? mode : null;
141
+ }
142
+ const EMPTY_OBJECTS: ReadonlyMap<string, THREE.Object3D> = new Map();
143
+
144
+ let outputProvider: EditorHostOutput | null = null;
145
+
146
+ /** Installed by the Code-OSS frame; packages never implement a second Output panel. */
147
+ export function setOutputProvider(provider: EditorHostOutput | null): void {
148
+ outputProvider = provider;
149
+ }
150
+
151
+ function nativeOutput(): EditorHostOutput {
152
+ if (!outputProvider) throw new Error('The workbench Output service is not connected.');
153
+ return outputProvider;
154
+ }
155
+
156
+ export function installEditorHostDoor(): void {
157
+ // WHICH DOCUMENT an edit was made in, for the frame's per-document undo
158
+ // ordering (`history/history-delegate.ts`). Installed here because this is
159
+ // the module that already reads the workspace registry; the history service
160
+ // must not.
161
+ setHistoryDocumentResolver(activeWorkspaceDocumentId);
162
+
163
+ // The door is installed at boot, before any store exists
164
+ // (`shell-store-door.ts`); the session members read the store lazily —
165
+ // before one, the session is `stopped` and subscriptions fire on arrival.
166
+ registerEditorHost({
167
+ output: {
168
+ write: (...args) => nativeOutput().write(...args),
169
+ show: (id) => nativeOutput().show(id),
170
+ },
171
+ console: {
172
+ log: (message, source) => editorConsole.log(message, source),
173
+ warn: (message, source) => editorConsole.warn(message, source),
174
+ error: (message, source) => editorConsole.error(message, source),
175
+ },
176
+ live: {
177
+ register: registerLiveSession,
178
+ mounted: anyLiveSessionMounted,
179
+ playing: anyLiveSessionPlaying,
180
+ runWindow: liveRunWindow,
181
+ restartRequired: liveRestartRequired,
182
+ restart: restartLiveSession,
183
+ subscribe: subscribeLiveSessions,
184
+ version: liveSessionsVersion,
185
+ notifyChanged: notifyLiveSessionsChanged,
186
+ snapshotFrame: snapshotLiveFrame,
187
+ frameCanvas: liveFrameCanvas,
188
+ authoringRefusal: liveAuthoringRefusal,
189
+ dispatch: dispatchLiveCommand,
190
+ scenes: liveScenes,
191
+ surface: liveSurface,
192
+ coverage: liveCoverage,
193
+ },
194
+ viewport: {
195
+ rig: viewportRig,
196
+ presentRoots: presentViewportRoots,
197
+ onFrame: onViewportFrame,
198
+ setHelper: setViewportHelper,
199
+ stages: viewportStages,
200
+ onStages: onViewportStages,
201
+ transition: {
202
+ begin: beginLiveTransition,
203
+ ready: notifyPlayTransitionGameReady,
204
+ end: endPlayTransition,
205
+ onSettled: onPlayTransitionSettled,
206
+ phase: playTransitionPhase,
207
+ },
208
+ },
209
+ hierarchy: {
210
+ object: (id) => shellStoreForHost()?.objectMap.get(id) ?? null,
211
+ objects: () => shellStoreForHost()?.objectMap ?? EMPTY_OBJECTS,
212
+ subscribe: (listener) => {
213
+ const stopArrival = onShellStoreChange(listener);
214
+ const stop = shellStoreForHost()?.subscribe(listener);
215
+ return () => {
216
+ stopArrival();
217
+ stop?.();
218
+ };
219
+ },
220
+ version: () => {
221
+ const store = shellStoreForHost();
222
+ return store?.getShellSnapshot?.() ?? store?.getSnapshot() ?? 0;
223
+ },
224
+ },
225
+ session: {
226
+ reportFacet: registerEditorStateFacet,
227
+ onSample: onSessionSample,
228
+ onCommandDispatched,
229
+ playState: () => shellStoreForHost()?.playState ?? 'stopped',
230
+ playEditRegime: () => shellStoreForHost()?.playEditRegime ?? null,
231
+ subscribe: (listener) => {
232
+ const stopArrival = onShellStoreChange(listener);
233
+ const stop = shellStoreForHost()?.subscribe(listener);
234
+ return () => {
235
+ stopArrival();
236
+ stop?.();
237
+ };
238
+ },
239
+ version: () => {
240
+ const store = shellStoreForHost();
241
+ return store?.getShellSnapshot?.() ?? store?.getSnapshot() ?? 0;
242
+ },
243
+ // A project session is open exactly when the shell that edits it has
244
+ // registered its store (`shell-store-door.ts`, `EditorContext.tsx`).
245
+ open: () => shellStoreForHost() !== null,
246
+ // The tombstone publishes the state; a lane releasing a resource only
247
+ // needs the EDGE, and a `null` here is the `server-gone` recovery
248
+ // (`session-tombstone.ts`), which is not an end.
249
+ onEnded: (fn) =>
250
+ onSessionEndedChange((state) => {
251
+ if (state !== null) fn();
252
+ }),
253
+ reportWorkerCallMeter: setBlenderCallMeter,
254
+ },
255
+ project: {
256
+ mounts: projectMounts,
257
+ // The ONE reading of the pinned engine version — `ProjectHeader.tsx`'s
258
+ // `v{engineVersion}` and a package's status item are the same number
259
+ // because they are the same field.
260
+ engineVersion: () => getCurrentProject()?.config.engine.version ?? null,
261
+ subscribe: onProjectChange,
262
+ onReady: onProjectReady,
263
+ },
264
+ notify: (notification) => notify(notification),
265
+ systems: {
266
+ inspected: getInspectedSystems,
267
+ subscribe: subscribeActiveNavigation,
268
+ inspectedNetworking: getInspectedNetworking,
269
+ subscribeNetworking: subscribeActiveNetworking,
270
+ // `SystemAdapters['audio']` is optional; the door answers null, never undefined.
271
+ inspectedAudio: () => getInspectedAudio() ?? null,
272
+ subscribeAudio: subscribeActiveAudio,
273
+ audioVersion: activeAudioVersion,
274
+ },
275
+ availability: { subscribe: subscribeAvailabilityTick, version: availabilityTickVersion },
276
+ workspace: {
277
+ showUtility: showWorkspaceUtility,
278
+ // A null store: the opened document simply does not switch the
279
+ // viewport tab, which is the host's own `onActivate` nicety.
280
+ openContributedDocument: (id) => openToolDocument(null, id),
281
+ // Without a store (no project session) the document still opens; the
282
+ // tab hand-off is the store's nicety. The kind's own `settle` is what
283
+ // the removed `openStory` did by hand before it addressed anything
284
+ // (re-reading the story registry): the async form tries, settles, and
285
+ // tries once more.
286
+ open: async (address) =>
287
+ (await openRegisteredDocumentAsync(
288
+ address.kind,
289
+ shellStoreForHost() ?? { setActiveViewportTab: () => {} },
290
+ address,
291
+ )) !== null,
292
+ liveDocument: {
293
+ id: GAME_DOCUMENT_ID,
294
+ register: registerLiveDocumentContent,
295
+ acquire: acquireLiveDocument,
296
+ release: releaseLiveDocument,
297
+ open: liveDocumentOpen,
298
+ container: liveDocumentContainer,
299
+ setContainer: setLiveDocumentContainer,
300
+ releaseContainer: releaseLiveDocumentContainer,
301
+ },
302
+ },
303
+ documents: {
304
+ activeId: activeWorkspaceDocumentId,
305
+ active: () => {
306
+ const document = activeWorkspaceDocument();
307
+ return document
308
+ ? { id: document.descriptor.id, kind: document.descriptor.kind, title: document.title }
309
+ : null;
310
+ },
311
+ subscribe: subscribeWorkspaceDocuments,
312
+ version: workspaceDocumentRegistryVersion,
313
+ context: documentContextFor,
314
+ waitForContext: waitForDocumentContext,
315
+ contextChanged: notifyDocumentContextChanged,
316
+ },
317
+ // THE STAGE TRANSPORT. A lookup plus a subscription, exactly like
318
+ // `documents` above: the registry IS the identity map, so the door adds
319
+ // nothing but the narrowing to the published handle.
320
+ transport: {
321
+ for: (documentId) => stageTransport(documentId),
322
+ subscribe: subscribeStageTransports,
323
+ },
324
+ projectLocalState: {
325
+ ready: projectLocalStateReady,
326
+ read: projectLocalSection,
327
+ write: writeProjectLocalSection,
328
+ projectRootPath: () => getCurrentProject()?.rootPath ?? null,
329
+ },
330
+ // UNDO (ARCHITECTURE-CORE §The core is Code-OSS: "there is one Cmd+Z").
331
+ // Every recorded element is pushed into VS Code's `IUndoRedoService`,
332
+ // keyed by the document's own file; `history-service.ts` stays the
333
+ // RECORDER and stops deciding which entry is next.
334
+ history: {
335
+ setDelegate: setHistoryDelegate,
336
+ onElement: onHistoryElement,
337
+ elements: recordedHistoryElements,
338
+ focusedResource: () => {
339
+ const document = activeWorkspaceDocument();
340
+ if (!document) return null;
341
+ // A document that IS a file says so in its own provenance
342
+ // (`WorkspaceDocumentProvenance.sourcePath`, project-relative) - scene
343
+ // and world documents, and every component/isolation view, which is
344
+ // precisely why scoping undo here fixes "Component-view Ctrl+Z acts on
345
+ // the MAIN scene's history": a component view's resource is its own
346
+ // file, and always was.
347
+ // A contributed document is covered by the same field: a Model
348
+ // document opens through `kind-documents.tsx`, which carries its
349
+ // finder entry's own `source.path` (the project-relative `.blend`)
350
+ // into provenance - so nobody has to re-parse a `model:<path>` id to
351
+ // learn what file a document is.
352
+ const provenance = document.descriptor.provenance?.sourcePath;
353
+ if (provenance) return provenance;
354
+ // THE SHELL'S OWN SCENE TAB HAS NO PROVENANCE, measured in the frame
355
+ // on the game template: its descriptor is built once, before any
356
+ // adapter is active, so `CenterDocuments`' `sourcePath ?? savePath`
357
+ // was null then and the frozen descriptor still says so. The live
358
+ // answer is the ACTIVE ADAPTER's own source path - `src/world.tsx`
359
+ // for a three root - which is where a save would land and therefore
360
+ // the honest first guess at what that stage is editing.
361
+ const store = shellStoreForHost();
362
+ return store ? (activeDocumentSourcePath(store) ?? activeSaveDestination(store)) : null;
363
+ },
364
+ undo: () => shellStoreForHost()?.projectHistory?.undo() ?? Promise.resolve(false),
365
+ redo: () => shellStoreForHost()?.projectHistory?.redo() ?? Promise.resolve(false),
366
+ canUndo: () => shellStoreForHost()?.projectHistory?.getSnapshot().canUndo ?? false,
367
+ canRedo: () => shellStoreForHost()?.projectHistory?.getSnapshot().canRedo ?? false,
368
+ undoLabel: () => shellStoreForHost()?.projectHistory?.getSnapshot().undoLabel ?? null,
369
+ redoLabel: () => shellStoreForHost()?.projectHistory?.getSnapshot().redoLabel ?? null,
370
+ subscribe: (listener) => {
371
+ const stopOwner = subscribeHistoryDelegate(listener);
372
+ const stopArrival = onShellStoreChange(listener);
373
+ const stopHistory = shellStoreForHost()?.projectHistory?.subscribe(listener);
374
+ const stopDocuments = subscribeWorkspaceDocuments(listener);
375
+ return () => {
376
+ stopOwner();
377
+ stopArrival();
378
+ stopHistory?.();
379
+ stopDocuments();
380
+ };
381
+ },
382
+ },
383
+ // THE PROJECT'S FILES, for the Code-OSS frame (ARCHITECTURE-CORE §The
384
+ // core is Code-OSS, "the storage backends → file system providers"). The
385
+ // door's paths are PROJECT-RELATIVE, the same spelling `history` hands
386
+ // over, so the frame resolves both against one workspace folder — which is
387
+ // what lets a vgai write land on the URI Monaco already holds and stop
388
+ // being an EXTERNAL change (U4's redo open, closed in U5).
389
+ files: {
390
+ setProvider: setFilesProvider,
391
+ read: (path) => projectFiles.read(path),
392
+ readBytes: (path) => projectFiles.readBytes(path),
393
+ write: (path, data) => projectFiles.write(path, data),
394
+ exists: (path) => projectFiles.exists(path),
395
+ list: (dir) => projectFiles.list(dir),
396
+ watch: (listener) => projectFiles.watch(listener),
397
+ },
398
+ // THE SETTINGS, for the Code-OSS frame (ARCHITECTURE-CORE §The core is
399
+ // Code-OSS: "the settings layers and settings UI → the configuration
400
+ // service"). Keys are the flat `vgai.*` names the settings schema derives
401
+ // (`@volter/editor-project/settings/keys`), the same spelling `.vscode/settings.json`
402
+ // and the Settings editor use — never a second one the frame translates.
403
+ // `inspect` is the member that carries the ADAPTER layer, which is the
404
+ // service's own MEMORY target under the frame and this project's `vgai
405
+ // .adapter.ts` standalone.
406
+ settings: {
407
+ setProvider: setSettingsProvider,
408
+ get: getSetting,
409
+ set: setSetting,
410
+ inspect: inspectSetting,
411
+ subscribe: (listener) => {
412
+ const stopOwner = subscribeSettingsProvider(listener);
413
+ const stopSettings = subscribeSettings(listener);
414
+ return () => {
415
+ stopOwner();
416
+ stopSettings();
417
+ };
418
+ },
419
+ },
420
+ // THE KEYBOARD, for the Code-OSS frame (ARCHITECTURE-CORE §The core is
421
+ // Code-OSS rule 3). The frame reads the ACTION table and the keymap
422
+ // TABLES — never a chord the frame spells itself — so `keymap-presets.ts`
423
+ // stays the one place a chord is written, `vgai` and `blender` alike.
424
+ keyboard: {
425
+ actions: () => registeredKeyActions().map(({ id, scope }) => ({ id, scope })),
426
+ keymaps: () =>
427
+ editorKeymaps().map(({ id, title }) => ({ id, title, chords: keymapTable(id) })),
428
+ activeKeymap: activeEditorKeymap,
429
+ invoke: (id) => invokeKeyAction(id as Parameters<typeof invokeKeyAction>[0]),
430
+ subscribe: (listener) => {
431
+ const stopActions = subscribeKeyActions(listener);
432
+ const stopKeymap = subscribeEditorKeymap(listener);
433
+ const stopStore = onShellStoreChange(listener);
434
+ const stopShell = shellStoreForHost()?.subscribe(listener);
435
+ const stopDocuments = subscribeWorkspaceDocuments(listener);
436
+ return () => {
437
+ stopActions();
438
+ stopKeymap();
439
+ stopStore();
440
+ stopShell?.();
441
+ stopDocuments();
442
+ };
443
+ },
444
+ version: () => keyActionsVersion() + workspaceDocumentRegistryVersion(),
445
+ stage: () => {
446
+ const store = shellStoreForHost();
447
+ // No shell yet: nothing is focused and nothing is showing, which is
448
+ // the honest answer rather than a guessed surface.
449
+ if (!store) return { surface: null, mode: null };
450
+ // `mode` is the document's own interaction mode (Blender's
451
+ // object/edit/pose/sculpt), and THE DOCUMENT REPORTS IT — on the
452
+ // context it already publishes, rather than through a door of its own.
453
+ // A document whose context answers `stageMode()` owns the key; every
454
+ // other document answers `null`, which is what this was for all of
455
+ // them until `@volter/editor-blender`'s Model document started reporting
456
+ // `bpy.context.mode` off the tree door (WORK.md §Blender in the tab is
457
+ // Blender, "Inspection parity", I3, item 4).
458
+ return { surface: focusedStageContext(store).surface, mode: activeStageMode() };
459
+ },
460
+ },
461
+ });
462
+ }