@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.
- package/BUNDLED_NOTICES +1527 -0
- package/LICENSE +686 -0
- package/LICENSE-APACHE +202 -0
- package/NOTICE +18 -0
- package/README.md +24 -0
- package/dist/build/chunk-JS4D4XZ3.js +175 -0
- package/dist/build/chunk-JS4D4XZ3.js.map +7 -0
- package/dist/build/vite-plugin-product-contributions.js +100 -0
- package/dist/build/vite-plugin-product-contributions.js.map +7 -0
- package/dist/build/vite-plugin-shared-react.js +25 -0
- package/dist/build/vite-plugin-shared-react.js.map +7 -0
- package/dist/build/vite-plugin-shared-three.js +86 -0
- package/dist/build/vite-plugin-shared-three.js.map +7 -0
- package/dist/server/chunk-KMJC7AGO.js +98 -0
- package/dist/server/chunk-KMJC7AGO.js.map +7 -0
- package/dist/server/chunk-PSILUMGS.js +46 -0
- package/dist/server/chunk-PSILUMGS.js.map +7 -0
- package/dist/server/frame-proxy.js +255 -0
- package/dist/server/frame-proxy.js.map +7 -0
- package/dist/server/open-browser.js +53 -0
- package/dist/server/open-browser.js.map +7 -0
- package/dist/server/process-shutdown.js +127 -0
- package/dist/server/process-shutdown.js.map +7 -0
- package/dist/server/session-registry.js +141 -0
- package/dist/server/session-registry.js.map +7 -0
- package/dist/server/spawn-opener.js +11 -0
- package/dist/server/spawn-opener.js.map +7 -0
- package/dist/server/worktree-identity.js +11 -0
- package/dist/server/worktree-identity.js.map +7 -0
- package/dist-server/packaged.mjs +88816 -0
- package/package.json +118 -0
- package/scripts/build-plugins.mjs +14 -0
- package/scripts/build-server.mjs +26 -0
- package/scripts/build-session.mjs +9 -0
- package/server/account-credentials.ts +60 -0
- package/server/account-service.ts +1434 -0
- package/server/adapter-region-includes.ts +47 -0
- package/server/asset-catalog-v2.ts +175 -0
- package/server/asset-history-snapshots.ts +196 -0
- package/server/asset-ledger-store.ts +195 -0
- package/server/asset-library-routes.ts +1595 -0
- package/server/blender-wasm-artifact.ts +430 -0
- package/server/boot-timings.ts +106 -0
- package/server/canonical-path.ts +50 -0
- package/server/checkout-workspace-preflight.ts +349 -0
- package/server/cloud-asset-catalog.ts +158 -0
- package/server/coding-inference-launch.ts +237 -0
- package/server/collaboration-account-client.ts +202 -0
- package/server/collaboration-attribution.ts +122 -0
- package/server/collaboration-session.ts +934 -0
- package/server/comfyui-bridge.ts +248 -0
- package/server/console-ledger.ts +499 -0
- package/server/creation-site-transform.ts +304 -0
- package/server/creation-site-write.ts +648 -0
- package/server/data-file-serialize.ts +158 -0
- package/server/editor-brand-html.ts +72 -0
- package/server/editor-control-socket.ts +366 -0
- package/server/editor-server-options.ts +190 -0
- package/server/editor-server.ts +1483 -0
- package/server/editor-sse.ts +352 -0
- package/server/engine-provenance.ts +169 -0
- package/server/engine-source-restart.ts +117 -0
- package/server/frame-bridge.ts +115 -0
- package/server/frame-proxy.ts +490 -0
- package/server/frame-workbench.ts +259 -0
- package/server/frontend-handoff.ts +229 -0
- package/server/game-globals-shadow.ts +113 -0
- package/server/gameplay-session-retention.ts +149 -0
- package/server/gameplay-sessions.ts +123 -0
- package/server/generation-jobs.ts +201 -0
- package/server/generation-reconciler.ts +137 -0
- package/server/generative-execution-context.ts +59 -0
- package/server/git-workflow.ts +612 -0
- package/server/harness-chat-caller.ts +36 -0
- package/server/harness-chat-service.ts +1681 -0
- package/server/idle-shutdown.ts +170 -0
- package/server/js-profiling-policy.ts +52 -0
- package/server/launcher-settings.ts +84 -0
- package/server/local-asset-catalog.ts +410 -0
- package/server/managed-account-defaults.ts +22 -0
- package/server/mock-control-plane.ts +540 -0
- package/server/model-import-conversion.ts +345 -0
- package/server/native-credential-store.ts +162 -0
- package/server/open-browser.ts +118 -0
- package/server/packaged.ts +1192 -0
- package/server/play-stall.ts +126 -0
- package/server/process-shutdown.ts +218 -0
- package/server/product-presets.ts +55 -0
- package/server/project-build-artifact.ts +95 -0
- package/server/project-components.ts +100 -0
- package/server/project-dependency-invalidation.ts +114 -0
- package/server/project-file-scan.ts +235 -0
- package/server/project-hmr-files.ts +215 -0
- package/server/project-install-roots.ts +210 -0
- package/server/project-kinds.ts +71 -0
- package/server/project-mcp-servers.ts +82 -0
- package/server/project-module-freshness.ts +109 -0
- package/server/project-module-instance.ts +375 -0
- package/server/project-optimize-deps-entries.ts +827 -0
- package/server/project-output-writer.ts +679 -0
- package/server/project-package-origin.ts +63 -0
- package/server/project-root-surface.ts +831 -0
- package/server/project-scratch-path.ts +47 -0
- package/server/project-script-hmr.ts +619 -0
- package/server/project-serving-plugins.ts +236 -0
- package/server/project-tools.ts +653 -0
- package/server/project-validation.ts +250 -0
- package/server/project-verbs.ts +127 -0
- package/server/project-view.ts +52 -0
- package/server/project-watch.ts +1134 -0
- package/server/project-work-coordinator.ts +288 -0
- package/server/provider-credentials.ts +331 -0
- package/server/recent-projects-store.ts +98 -0
- package/server/redact-secrets.ts +71 -0
- package/server/repository-presence.ts +267 -0
- package/server/routes/account.ts +357 -0
- package/server/routes/agents.ts +60 -0
- package/server/routes/assets.ts +154 -0
- package/server/routes/build.ts +13 -0
- package/server/routes/collaboration.ts +595 -0
- package/server/routes/configurations.ts +419 -0
- package/server/routes/context.ts +264 -0
- package/server/routes/control-plane.ts +1811 -0
- package/server/routes/logs.ts +272 -0
- package/server/routes/project-identity.ts +302 -0
- package/server/routes/project-open.ts +429 -0
- package/server/routes/project-source.ts +686 -0
- package/server/routes/project-state.ts +383 -0
- package/server/routes/relay.ts +1029 -0
- package/server/routes/route-helpers.ts +29 -0
- package/server/routes/served-modules.ts +138 -0
- package/server/routes/session-tabs.ts +196 -0
- package/server/routes/settings.ts +121 -0
- package/server/routes/share-control.ts +486 -0
- package/server/routes/themes.ts +116 -0
- package/server/routes/tools.ts +230 -0
- package/server/routes/worktrees.ts +595 -0
- package/server/scoped-game-css.ts +461 -0
- package/server/server-utils.ts +1194 -0
- package/server/session-product.ts +112 -0
- package/server/session-registry.ts +230 -0
- package/server/share-claims.ts +138 -0
- package/server/share-host.ts +526 -0
- package/server/share-session-gateway.ts +1362 -0
- package/server/share-tunnel.ts +123 -0
- package/server/spawn-opener.ts +74 -0
- package/server/support/play/log-format.ts +76 -0
- package/server/support/play/session-record.ts +199 -0
- package/server/support/project/build-discipline.ts +718 -0
- package/server/support/project/inspection-node.ts +119 -0
- package/server/support/project/log-naming.ts +54 -0
- package/server/support/project/provenance.ts +290 -0
- package/server/support/project/run-name.ts +18 -0
- package/server/support/project/session-journal.ts +830 -0
- package/server/support/project/shared.ts +327 -0
- package/server/tab-bootstrap.ts +62 -0
- package/server/tab-heartbeat.ts +477 -0
- package/server/tab-lifecycle.ts +550 -0
- package/server/tab-presence.ts +1508 -0
- package/server/team-agent-mirror.ts +95 -0
- package/server/twin-auth.ts +138 -0
- package/server/vendored-lock-recorder.ts +968 -0
- package/server/worktree-identity.ts +121 -0
- package/server/worktree-management.ts +398 -0
- package/server/worktree-retention.d.mts +13 -0
- package/server/worktree-retention.mjs +205 -0
- package/src/EditorContext.tsx +169 -0
- package/src/account.ts +333 -0
- package/src/action-registry.ts +532 -0
- package/src/active-product.ts +74 -0
- package/src/active-project.ts +155 -0
- package/src/adapter-editor-config.ts +25 -0
- package/src/adapter-observation.ts +49 -0
- package/src/animation/stage-transport.ts +379 -0
- package/src/animation/three-clips-subject.ts +172 -0
- package/src/api/asset-library-wire.ts +45 -0
- package/src/api/assets.ts +365 -0
- package/src/api/base.ts +10 -0
- package/src/api/build.ts +99 -0
- package/src/api/git-wire.ts +56 -0
- package/src/api/logs.ts +92 -0
- package/src/api/project-identity.ts +74 -0
- package/src/api/project-open.ts +355 -0
- package/src/api/project-source.ts +162 -0
- package/src/api/project-state.ts +107 -0
- package/src/api/relay.ts +268 -0
- package/src/api/settings.ts +36 -0
- package/src/api/themes.ts +45 -0
- package/src/api/worktrees.ts +257 -0
- package/src/asset-compare-core.ts +171 -0
- package/src/asset-compare.ts +294 -0
- package/src/asset-editor-context.tsx +100 -0
- package/src/asset-events.ts +97 -0
- package/src/asset-inspector-actions.ts +87 -0
- package/src/asset-preview-framing.ts +357 -0
- package/src/asset-preview.ts +2802 -0
- package/src/asset-selection-viewer-registry.ts +113 -0
- package/src/asset-selection.ts +133 -0
- package/src/asset-workflow/asset-capabilities.ts +344 -0
- package/src/asset-workflow/asset-import-jobs.ts +106 -0
- package/src/asset-workflow/asset-ledger-backend.ts +126 -0
- package/src/asset-workflow/asset-ledger.ts +156 -0
- package/src/asset-workflow/asset-materialization-report.ts +140 -0
- package/src/asset-workflow/asset-pack-manifest.ts +320 -0
- package/src/asset-workflow/asset-types.ts +142 -0
- package/src/asset-workflow/asset-workflow-quality.ts +61 -0
- package/src/asset-workflow/audio-preview-player.ts +193 -0
- package/src/asset-workflow/audio-waveform.ts +22 -0
- package/src/asset-workflow/cloud-asset-client.ts +263 -0
- package/src/asset-workflow/folder-preview.ts +345 -0
- package/src/asset-workflow/hosted-asset-materialization.ts +236 -0
- package/src/asset-workflow/image-view-scale.ts +32 -0
- package/src/asset-workflow/import-contract.ts +124 -0
- package/src/asset-workflow/ledger-write-lock.ts +244 -0
- package/src/asset-workflow/model-inspection.ts +818 -0
- package/src/asset-workflow/pixi-spritesheet.ts +197 -0
- package/src/asset-workflow/preview-resource-lifetime.ts +44 -0
- package/src/asset-workflow/project-asset-commands.ts +23 -0
- package/src/asset-workflow/project-asset-health.ts +139 -0
- package/src/asset-workflow/project-asset-operations.ts +154 -0
- package/src/asset-workflow/project-asset-roots.ts +68 -0
- package/src/asset-workflow/project-content.ts +288 -0
- package/src/asset-workflow/project-source-index.ts +550 -0
- package/src/asset-workflow/thumbnail-system.ts +256 -0
- package/src/authoring/active-adapter.ts +199 -0
- package/src/authoring/active-systems.ts +422 -0
- package/src/authoring/adapter-key.ts +18 -0
- package/src/authoring/authoring-asset-url.ts +27 -0
- package/src/authoring/bootstrap-state.ts +49 -0
- package/src/authoring/boundary-authoring-adapter.ts +184 -0
- package/src/authoring/breakpoint-state.ts +43 -0
- package/src/authoring/canvas-scene-guides.ts +76 -0
- package/src/authoring/component-instance-root.ts +171 -0
- package/src/authoring/composite-authoring-adapter.ts +2110 -0
- package/src/authoring/consumer-actions.ts +520 -0
- package/src/authoring/css-numeric-style.ts +97 -0
- package/src/authoring/design-time-layers.ts +849 -0
- package/src/authoring/design-time-mount-registry.ts +235 -0
- package/src/authoring/design-time-settle.ts +343 -0
- package/src/authoring/edit-mode-authoring.ts +619 -0
- package/src/authoring/eyedropper-session.ts +60 -0
- package/src/authoring/instance-source-menu-register.ts +13 -0
- package/src/authoring/instance-source-menu.ts +135 -0
- package/src/authoring/layered-pick.ts +183 -0
- package/src/authoring/live-gesture-lock.ts +50 -0
- package/src/authoring/live-object-transform.ts +62 -0
- package/src/authoring/mount-failure-report.ts +154 -0
- package/src/authoring/mounted-root-subjects.ts +144 -0
- package/src/authoring/no-authoring-adapter.ts +55 -0
- package/src/authoring/null-inspection-subjects.tsx +75 -0
- package/src/authoring/object3d-document-persistence.ts +106 -0
- package/src/authoring/object3d-document-session-registry.ts +120 -0
- package/src/authoring/object3d-document-session.ts +1326 -0
- package/src/authoring/object3d-gesture-controller.ts +113 -0
- package/src/authoring/panel-authoring.ts +121 -0
- package/src/authoring/prefab-instance-inspector-section.tsx +237 -0
- package/src/authoring/prefab-instance-section-model.ts +55 -0
- package/src/authoring/project-authoring-session.ts +105 -0
- package/src/authoring/provenance.ts +99 -0
- package/src/authoring/quarks-particle-systems.ts +19 -0
- package/src/authoring/react-canvas-navigation.ts +255 -0
- package/src/authoring/react-design-canvas-style.ts +20 -0
- package/src/authoring/react-story-board.ts +937 -0
- package/src/authoring/selection-scope.ts +195 -0
- package/src/authoring/shell-document-ops.ts +169 -0
- package/src/authoring/shell-object3d-document-write-policy.ts +108 -0
- package/src/authoring/shell-viewport-policy.ts +48 -0
- package/src/authoring/source-object3d-authoring-adapter.ts +526 -0
- package/src/authoring/stories-scope.ts +35 -0
- package/src/authoring/story-board-chrome-fit.ts +107 -0
- package/src/authoring/story-board-presentation.ts +111 -0
- package/src/authoring/three-projection-core.ts +226 -0
- package/src/authoring/viewport-pick-context.ts +40 -0
- package/src/authoring/viewport-raycast.ts +240 -0
- package/src/authoring/viewport-tool-context.ts +73 -0
- package/src/authoring/world-canvas-viewport-state.ts +35 -0
- package/src/authoring/world-hidden-viewport.ts +152 -0
- package/src/authoring/world-pan-state.ts +198 -0
- package/src/authoring/world-session-state.ts +101 -0
- package/src/authoring/write-pipe.ts +173 -0
- package/src/availability-tick.ts +66 -0
- package/src/bitmap-label.ts +120 -0
- package/src/blender-tab-metrics.ts +161 -0
- package/src/board-open-actions.ts +20 -0
- package/src/boot-routing.ts +391 -0
- package/src/build-identity.ts +15 -0
- package/src/bytes-codec.ts +62 -0
- package/src/camera-authoring.ts +175 -0
- package/src/cancellation-reason.ts +58 -0
- package/src/canvas-preview-frames.ts +482 -0
- package/src/capture-camera-pose.ts +77 -0
- package/src/chrome-registry.ts +159 -0
- package/src/chrome-slot-registry.ts +91 -0
- package/src/collaboration-client.ts +264 -0
- package/src/collaboration-presence.ts +41 -0
- package/src/command-dispatch.ts +19 -0
- package/src/command-listener.ts +2743 -0
- package/src/command-registry.ts +70 -0
- package/src/component-board-registry.ts +205 -0
- package/src/component-states-registry.ts +200 -0
- package/src/components/AgentPresentationNotice.tsx +75 -0
- package/src/components/AlignToolbar.tsx +204 -0
- package/src/components/AppRoot.tsx +394 -0
- package/src/components/ApplicationMenus.tsx +415 -0
- package/src/components/AssetBrowser.tsx +2843 -0
- package/src/components/AssetEditorShell.tsx +216 -0
- package/src/components/AssetInspectorToolSection.tsx +124 -0
- package/src/components/BoardRulers.tsx +354 -0
- package/src/components/CameraInfo.tsx +81 -0
- package/src/components/CanvasSceneViewport.tsx +556 -0
- package/src/components/CapabilityCoverageSection.tsx +185 -0
- package/src/components/CenterDocuments.tsx +22 -0
- package/src/components/ChromeSlot.tsx +20 -0
- package/src/components/CodeView.tsx +470 -0
- package/src/components/CollaborationHeaderControl.css +74 -0
- package/src/components/CompactInspectorCard.tsx +190 -0
- package/src/components/CompactInspectorShell.tsx +39 -0
- package/src/components/ConsolePanel.css +55 -0
- package/src/components/ConsolePanel.tsx +270 -0
- package/src/components/DefaultEditorLayout.tsx +106 -0
- package/src/components/DocumentHeaderStrip.tsx +96 -0
- package/src/components/DocumentShelfRail.tsx +45 -0
- package/src/components/DocumentThumbnail.tsx +345 -0
- package/src/components/EditorLeaseGuard.tsx +372 -0
- package/src/components/ErrorBanner.tsx +123 -0
- package/src/components/FolderPreviewTile.tsx +159 -0
- package/src/components/GameHierarchy.tsx +3842 -0
- package/src/components/GameplaySessionTimeline.tsx +295 -0
- package/src/components/InspectionProjection.tsx +968 -0
- package/src/components/Inspector.tsx +233 -0
- package/src/components/InspectorCanvasPreview.tsx +35 -0
- package/src/components/InspectorFieldsSection.tsx +290 -0
- package/src/components/InspectorObjectPreview.tsx +57 -0
- package/src/components/InspectorStoriesSection.tsx +92 -0
- package/src/components/InspectorToolSection.tsx +96 -0
- package/src/components/InspectorTransformSection.tsx +245 -0
- package/src/components/LightExplorerPanel.tsx +433 -0
- package/src/components/MediaProperties.tsx +145 -0
- package/src/components/NonThreeAuthoringBootstrap.tsx +19 -0
- package/src/components/Object3DDocumentToolbar.css +100 -0
- package/src/components/Object3DDocumentToolbar.tsx +454 -0
- package/src/components/Object3DDocumentViewport.tsx +58 -0
- package/src/components/ProjectHeader.css +617 -0
- package/src/components/ProjectHeader.tsx +328 -0
- package/src/components/ProjectLayout.tsx +249 -0
- package/src/components/ReactCanvasControls.tsx +284 -0
- package/src/components/RootSelectionOverlay.tsx +3162 -0
- package/src/components/RootTextEditor.tsx +79 -0
- package/src/components/SaveStatus.tsx +70 -0
- package/src/components/StageHost.tsx +1954 -0
- package/src/components/StageOverlays.tsx +21 -0
- package/src/components/StartupErrorScreen.tsx +76 -0
- package/src/components/StartupLoadingScreen.tsx +65 -0
- package/src/components/StatsOverlay.tsx +78 -0
- package/src/components/SurfaceStateOverlay.tsx +24 -0
- package/src/components/ToolContributionSurfaces.tsx +65 -0
- package/src/components/ToolHost.tsx +370 -0
- package/src/components/ToolObject3DPreview.tsx +39 -0
- package/src/components/Toolbar.tsx +595 -0
- package/src/components/TransientHint.tsx +44 -0
- package/src/components/TransportStrip.tsx +174 -0
- package/src/components/VersionControlSection.tsx +470 -0
- package/src/components/VgaiLogo.css +83 -0
- package/src/components/VgaiLogo.tsx +35 -0
- package/src/components/ViewportControlsHint.tsx +60 -0
- package/src/components/ViewportFurniture.tsx +401 -0
- package/src/components/ViewportOverlay.tsx +145 -0
- package/src/components/ViewportOverlaysMenu.tsx +153 -0
- package/src/components/ViewportShadingMenu.tsx +300 -0
- package/src/components/ViewportViewMenu.tsx +101 -0
- package/src/components/WorkspaceDocumentSurface.tsx +204 -0
- package/src/components/WorkspaceUtilitySurface.tsx +22 -0
- package/src/components/WorktreeSwitcher.css +239 -0
- package/src/components/WorktreeSwitcher.tsx +890 -0
- package/src/components/account-documents.tsx +1162 -0
- package/src/components/asset-documents.tsx +812 -0
- package/src/components/asset-editor-persistence.ts +216 -0
- package/src/components/asset-selection-section.tsx +535 -0
- package/src/components/asset-thumbnails.tsx +312 -0
- package/src/components/asset-viewers/AudioViewer.tsx +201 -0
- package/src/components/asset-viewers/EntityModelDocument.tsx +122 -0
- package/src/components/asset-viewers/EnvironmentAssetDocument.tsx +440 -0
- package/src/components/asset-viewers/GenericJsonViewer.tsx +102 -0
- package/src/components/asset-viewers/ImageViewer.tsx +300 -0
- package/src/components/asset-viewers/JsonAssetDocument.tsx +93 -0
- package/src/components/asset-viewers/LiveModuleDocument.tsx +417 -0
- package/src/components/asset-viewers/LutAssetDocument.tsx +444 -0
- package/src/components/asset-viewers/ModelAssetDocument.tsx +105 -0
- package/src/components/asset-viewers/Object3DPreview.tsx +359 -0
- package/src/components/asset-viewers/OnlineAssetDetail.tsx +421 -0
- package/src/components/asset-viewers/PasteboardModuleDocument.tsx +67 -0
- package/src/components/asset-viewers/QuarksAssetDocument.tsx +526 -0
- package/src/components/asset-viewers/ShaderAssetDocument.tsx +743 -0
- package/src/components/asset-viewers/SourceAssetViewer.tsx +281 -0
- package/src/components/asset-viewers/SpritesheetSpriteView.tsx +102 -0
- package/src/components/asset-viewers/VideoViewer.tsx +101 -0
- package/src/components/asset-viewers/shader-source.ts +144 -0
- package/src/components/asset-workflow.css +731 -0
- package/src/components/board-guides.ts +150 -0
- package/src/components/compact-inspector.css +539 -0
- package/src/components/core-utilities.tsx +90 -0
- package/src/components/editor-notifications.css +40 -0
- package/src/components/engine-workspace.css +274 -0
- package/src/components/inspector-preview-section.tsx +238 -0
- package/src/components/inspector-property-grouping.ts +64 -0
- package/src/components/inspector-revert-label.ts +20 -0
- package/src/components/inspector-selection.ts +42 -0
- package/src/components/inspector-stories-gating.ts +171 -0
- package/src/components/inspector-transform-subject.ts +11 -0
- package/src/components/inspector-transform.ts +75 -0
- package/src/components/kind-documents.tsx +500 -0
- package/src/components/palette-action-publisher.tsx +140 -0
- package/src/components/primitives/DraftColorInput.tsx +74 -0
- package/src/components/product-shell.css +1829 -0
- package/src/components/project-tool-documents.tsx +410 -0
- package/src/components/scene-documents.tsx +223 -0
- package/src/components/stage-keyboard.tsx +37 -0
- package/src/components/stage-overlay-set.tsx +107 -0
- package/src/components/stage-presence-markers.ts +478 -0
- package/src/components/standard-viewport-dressing.ts +417 -0
- package/src/components/status-contributions.tsx +403 -0
- package/src/components/tool-documents.tsx +309 -0
- package/src/components/tool-schema-form.tsx +262 -0
- package/src/components/use-after-paint.ts +41 -0
- package/src/components/use-project-image-assets.ts +86 -0
- package/src/components/viewport-header-controls.css +90 -0
- package/src/components/viewport-surface-status.tsx +55 -0
- package/src/components/workspace-history.ts +32 -0
- package/src/components/workspace-static-panel-registry.tsx +152 -0
- package/src/components/workspace-surfaces.css +621 -0
- package/src/components/world-documents.tsx +586 -0
- package/src/components/world-overlay-gestures.ts +1694 -0
- package/src/composite-screenshot.ts +1641 -0
- package/src/console-sync.ts +131 -0
- package/src/constraint-helper.ts +338 -0
- package/src/content-entry-source-registry.ts +184 -0
- package/src/coverage/authoring-seam-evidence.ts +300 -0
- package/src/coverage/canvas-reveal.ts +192 -0
- package/src/coverage/design-time-surfaces.ts +101 -0
- package/src/coverage/live-seam-evidence.ts +11 -0
- package/src/coverage/ontology-invariants.ts +466 -0
- package/src/coverage/session-vitals.ts +501 -0
- package/src/coverage/system-seam-evidence.ts +72 -0
- package/src/crash-null-boundary.ts +36 -0
- package/src/creation-site-edit.ts +1479 -0
- package/src/creation-site-registry.ts +160 -0
- package/src/delegate-harness-registry.ts +143 -0
- package/src/document-context-registry.ts +177 -0
- package/src/document-open-registry.ts +200 -0
- package/src/document-preview-source.ts +20 -0
- package/src/document-renderer-session.ts +138 -0
- package/src/editor-api.ts +46 -0
- package/src/editor-chrome-capture.ts +139 -0
- package/src/editor-commands.ts +164 -0
- package/src/editor-console.ts +563 -0
- package/src/editor-current-view.ts +82 -0
- package/src/editor-document-probe.ts +881 -0
- package/src/editor-git-client.ts +115 -0
- package/src/editor-host-door.ts +462 -0
- package/src/editor-hotkeys.ts +842 -0
- package/src/editor-lease-view.ts +39 -0
- package/src/editor-lease.ts +415 -0
- package/src/editor-mode.ts +19 -0
- package/src/editor-notifications.ts +140 -0
- package/src/editor-presence.ts +563 -0
- package/src/editor-presentation-activity.ts +50 -0
- package/src/editor-presentation-notice.ts +42 -0
- package/src/editor-runtime.tsx +145 -0
- package/src/editor-server-response.ts +86 -0
- package/src/editor-session-attribution.ts +75 -0
- package/src/editor-session-mode.ts +54 -0
- package/src/editor-shell-store.ts +1304 -0
- package/src/editor-state-facets.ts +74 -0
- package/src/editor-styles.css +33 -0
- package/src/editor-view-presentation.ts +810 -0
- package/src/editor-viewport.ts +5302 -0
- package/src/entity-lod.ts +31 -0
- package/src/entity-object.ts +91 -0
- package/src/files/file-provider.ts +62 -0
- package/src/files/project-files.ts +264 -0
- package/src/finders/index.ts +136 -0
- package/src/finders/scenes-from-entrypoint-selection.ts +387 -0
- package/src/frame/bridge.tsx +1408 -0
- package/src/frame/product.ts +77 -0
- package/src/gameplay-dom-recording.ts +319 -0
- package/src/gameplay-export-state.ts +14 -0
- package/src/gameplay-replay.ts +417 -0
- package/src/gameplay-session-time.ts +9 -0
- package/src/gameplay-sessions.ts +204 -0
- package/src/harness-chat-types.ts +253 -0
- package/src/hierarchy-component-marks.ts +298 -0
- package/src/hierarchy-drop.ts +91 -0
- package/src/hierarchy-expansion-state.ts +80 -0
- package/src/hierarchy-header-slot.ts +52 -0
- package/src/hierarchy-internals.ts +197 -0
- package/src/hierarchy-kind-icon.ts +217 -0
- package/src/hierarchy-mark-reader.ts +73 -0
- package/src/hierarchy-menu-registry.ts +67 -0
- package/src/hierarchy-node-rows.ts +307 -0
- package/src/hierarchy-panel-view.ts +280 -0
- package/src/hierarchy-projection.ts +76 -0
- package/src/hierarchy-row-cache.ts +243 -0
- package/src/hierarchy-row-model.ts +308 -0
- package/src/hierarchy-rows.ts +11 -0
- package/src/hierarchy-walk.ts +86 -0
- package/src/history/editor-session.ts +25 -0
- package/src/history/history-commands.ts +147 -0
- package/src/history/history-delegate.ts +163 -0
- package/src/history/history-limit-notices.ts +43 -0
- package/src/history/history-service.ts +1173 -0
- package/src/history/persistence-coordinator.ts +35 -0
- package/src/history/project-file-history.ts +386 -0
- package/src/history/project-root-history-backends.ts +139 -0
- package/src/history/resource-registry.ts +209 -0
- package/src/history/snapshot-store.ts +103 -0
- package/src/history/source-history-backend.ts +546 -0
- package/src/history/types.ts +124 -0
- package/src/hmr-registration-group.ts +67 -0
- package/src/hmr-stable-react-context.ts +23 -0
- package/src/hotkeys.ts +188 -0
- package/src/inference-diagnostics.ts +69 -0
- package/src/initial-project.ts +80 -0
- package/src/inspection/active-subject.ts +578 -0
- package/src/inspection/active-surface.ts +142 -0
- package/src/inspection/compose.ts +1064 -0
- package/src/inspection/display.ts +170 -0
- package/src/inspection/document-subject.ts +109 -0
- package/src/inspection/game-subject.ts +85 -0
- package/src/inspection/model.ts +542 -0
- package/src/inspection/null-subject.ts +115 -0
- package/src/inspection/serialize.ts +357 -0
- package/src/inspection/use-active-inspection.ts +180 -0
- package/src/inspector-presentation.ts +201 -0
- package/src/inspector-section-registry.ts +221 -0
- package/src/instance-source-actions.ts +163 -0
- package/src/instanced-presentation.ts +164 -0
- package/src/js-heap.ts +71 -0
- package/src/key-actions.ts +91 -0
- package/src/keymap-presets.ts +401 -0
- package/src/layout-policy.ts +31 -0
- package/src/learn-links.ts +73 -0
- package/src/light-explorer-model.ts +134 -0
- package/src/live-canvas-frame.ts +55 -0
- package/src/live-document.ts +279 -0
- package/src/live-module-source.ts +230 -0
- package/src/live-session-registry.ts +220 -0
- package/src/live-transition.ts +633 -0
- package/src/manifest-project.ts +107 -0
- package/src/model-thumbnail.ts +523 -0
- package/src/native-selection-style.ts +202 -0
- package/src/object3d-document-write-policy.ts +137 -0
- package/src/packaged-runtime.ts +108 -0
- package/src/palettes/maya.palette.json +57 -0
- package/src/palettes/substance.palette.json +57 -0
- package/src/pasteboard-module.ts +81 -0
- package/src/performance-profiler.ts +367 -0
- package/src/performance-sources.ts +69 -0
- package/src/play-boot-phase.ts +145 -0
- package/src/presentation-surface.ts +248 -0
- package/src/project-adapter.ts +1143 -0
- package/src/project-asset-refresh.ts +26 -0
- package/src/project-declaration-refresh.ts +31 -0
- package/src/project-local-state.ts +118 -0
- package/src/project-manager.ts +243 -0
- package/src/project-module-changes.ts +163 -0
- package/src/project-module-split.ts +266 -0
- package/src/project-provenance.ts +115 -0
- package/src/project-ready.ts +42 -0
- package/src/project-session-reset.ts +67 -0
- package/src/project-shape.ts +68 -0
- package/src/project-tool-discovery.ts +66 -0
- package/src/project-tools.ts +107 -0
- package/src/project-work-types.ts +149 -0
- package/src/projection/three.ts +898 -0
- package/src/projection/types.ts +44 -0
- package/src/readiness.ts +113 -0
- package/src/reflection-probe-helper.ts +142 -0
- package/src/reported-play-state.ts +90 -0
- package/src/resolve-relative-specifier.ts +33 -0
- package/src/scene-document-plan.ts +315 -0
- package/src/scene-framing.ts +315 -0
- package/src/scene-live-open.ts +210 -0
- package/src/scene-view-fog.ts +89 -0
- package/src/scoped-game-css.ts +152 -0
- package/src/session-orphan-record.ts +193 -0
- package/src/session-tombstone.ts +126 -0
- package/src/settings/settings-provider.ts +82 -0
- package/src/settings-store.ts +345 -0
- package/src/shared-view-restore.ts +42 -0
- package/src/shell-store-door.ts +45 -0
- package/src/source-conflict.ts +122 -0
- package/src/spatial-handle-visuals.ts +332 -0
- package/src/stage-context.ts +341 -0
- package/src/stage-store-registry.ts +63 -0
- package/src/stale-chunk-recovery.ts +34 -0
- package/src/state-report-deferral.ts +73 -0
- package/src/storage/host-files-storage.ts +97 -0
- package/src/storage/http-storage.ts +174 -0
- package/src/storage/index.ts +75 -0
- package/src/storage/mem-storage.ts +149 -0
- package/src/storage/path-lock.ts +44 -0
- package/src/storage/paths.ts +26 -0
- package/src/storage/types.ts +116 -0
- package/src/stories/StoryComponentThumbnail.tsx +184 -0
- package/src/stories/StoryPreviewMount.tsx +306 -0
- package/src/stories/component-content-source.tsx +106 -0
- package/src/stories/component-states-source.ts +78 -0
- package/src/stories/compose-project-stories.ts +255 -0
- package/src/stories/pixi-story-model.ts +30 -0
- package/src/stories/prefabs-finder.ts +54 -0
- package/src/stories/prefabs-from-stories.ts +182 -0
- package/src/stories/project-story-discovery.ts +78 -0
- package/src/stories/project-story-regions.ts +24 -0
- package/src/stories/story-actions.ts +54 -0
- package/src/stories/story-capture-command.ts +124 -0
- package/src/stories/story-capture.ts +584 -0
- package/src/stories/story-declared-medium.ts +126 -0
- package/src/stories/story-discovery.ts +176 -0
- package/src/stories/story-document-openers.ts +36 -0
- package/src/stories/story-dom-runtime.ts +78 -0
- package/src/stories/story-grouping.ts +111 -0
- package/src/stories/story-lane.ts +88 -0
- package/src/stories/story-mount-turn.ts +27 -0
- package/src/stories/story-opener.ts +260 -0
- package/src/stories/story-pixi-preview.ts +408 -0
- package/src/stories/story-presentation.ts +215 -0
- package/src/stories/story-registry.ts +517 -0
- package/src/stories/story-three-preview.ts +807 -0
- package/src/stories/three-story-model.ts +96 -0
- package/src/story-three-preview-runtime.ts +56 -0
- package/src/surface-keyboard.ts +112 -0
- package/src/surface-state.ts +124 -0
- package/src/tab-bootstrap.js +628 -0
- package/src/tab-census.ts +198 -0
- package/src/tab-lifecycle-client.ts +196 -0
- package/src/theme-library.ts +844 -0
- package/src/theme-preference.ts +378 -0
- package/src/theme.css +3437 -0
- package/src/three-viewport/bone-selection-highlight.ts +119 -0
- package/src/three-viewport/camera-fit.ts +41 -0
- package/src/three-viewport/interactive-renderer.ts +132 -0
- package/src/three-viewport/selection-brackets.ts +310 -0
- package/src/three-viewport/selection-outline.ts +183 -0
- package/src/three-viewport/skeleton-helper.ts +61 -0
- package/src/three-viewport/source-color.ts +167 -0
- package/src/three-viewport/studio-environment.ts +96 -0
- package/src/three-viewport-presentation.ts +23 -0
- package/src/tool-contribution-play.ts +74 -0
- package/src/tool-loader.ts +1798 -0
- package/src/transform-mode-request.ts +57 -0
- package/src/transient-hint.ts +78 -0
- package/src/trigger-volume-helper.ts +116 -0
- package/src/ui-source/adapter-region-includes.ts +241 -0
- package/src/ui-source/ensure-import.ts +132 -0
- package/src/ui-source/file-region-resolver.ts +302 -0
- package/src/ui-source/inspect.ts +775 -0
- package/src/ui-source/oid-transform.ts +1845 -0
- package/src/ui-source/plan-csf-story.ts +196 -0
- package/src/ui-source/plan-extract-component.ts +421 -0
- package/src/ui-source/plan-fork-component.ts +621 -0
- package/src/ui-source/plan-named-style.ts +95 -0
- package/src/ui-source/plan-source-edit.ts +353 -0
- package/src/ui-source/r3f-contract-resolver.ts +327 -0
- package/src/ui-source/r3f-diagnostic-index.ts +165 -0
- package/src/ui-source/r3f-environment-binding.ts +133 -0
- package/src/ui-source/r3f-joint-binding.ts +251 -0
- package/src/ui-source/r3f-lod-binding.ts +91 -0
- package/src/ui-source/r3f-particle-binding.ts +235 -0
- package/src/ui-source/r3f-physics-binding.ts +483 -0
- package/src/ui-source/r3f-project-contracts.ts +444 -0
- package/src/ui-source/relative-import-specifier.ts +34 -0
- package/src/ui-source/reparent-guard.ts +544 -0
- package/src/ui-source/source-edit-request.ts +97 -0
- package/src/ui-source/source-write-backend.ts +618 -0
- package/src/ui-source/syntactic-prop-specs.ts +296 -0
- package/src/ui-source/tier-source-write-backend.ts +279 -0
- package/src/ui-source/ts-ast.ts +171 -0
- package/src/ui-source/utility-class-support.ts +169 -0
- package/src/ui-source/write-component-default.ts +133 -0
- package/src/ui-source/writer.ts +1989 -0
- package/src/viewport-activation-timings.ts +840 -0
- package/src/viewport-authoring-policy.ts +186 -0
- package/src/viewport-controls-hint.ts +57 -0
- package/src/viewport-door.ts +237 -0
- package/src/viewport-shading-boundary.ts +12 -0
- package/src/vite-error-surface.ts +141 -0
- package/src/wait-until.ts +37 -0
- package/src/workspace-areas.ts +156 -0
- package/src/workspace-aux-commands.ts +11 -0
- package/src/workspace-available-documents.ts +127 -0
- package/src/workspace-core-utilities.ts +31 -0
- package/src/workspace-document-ids.ts +59 -0
- package/src/workspace-document-registry.ts +612 -0
- package/src/workspace-document-restore.ts +145 -0
- package/src/workspace-host-commands.ts +141 -0
- package/src/workspace-persistence-gate.ts +40 -0
- package/src/workspace-play-utilities.ts +44 -0
- package/src/workspace-presets.ts +425 -0
- package/src/workspace-regions.ts +294 -0
- package/src/workspace-state-persistence.ts +536 -0
- package/src/workspace-static-panels.ts +73 -0
- package/src/workspace-status-registry.ts +121 -0
- package/src/workspace-style.ts +239 -0
- package/src/workspace-utility-commands.ts +74 -0
- package/src/workspace-utility-registry.ts +263 -0
- package/src/workspace-viewport-rect.ts +97 -0
- package/src/world-adoption.ts +115 -0
- package/src/world-document-routing.ts +104 -0
- package/vite-plugin-creation-site-write.ts +184 -0
- package/vite-plugin-creation-site.ts +80 -0
- package/vite-plugin-game-static.ts +303 -0
- package/vite-plugin-module-doorways.ts +336 -0
- package/vite-plugin-product-contributions.ts +197 -0
- package/vite-plugin-project-game-static.ts +125 -0
- package/vite-plugin-project-jsx-js.ts +65 -0
- package/vite-plugin-project-root-absolute-assets.ts +359 -0
- package/vite-plugin-shared-react.ts +420 -0
- package/vite-plugin-shared-three.ts +203 -0
- package/vite-plugin-ui-oid.ts +2106 -0
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The PROJECTION family's surface-neutral shapes (ARCHITECTURE-CORE §The editor
|
|
3
|
+
* protocol).
|
|
4
|
+
*
|
|
5
|
+
* A projection answers "what nodes are in this world, what are their stable
|
|
6
|
+
* ids, and how do they nest" over the RUNTIME objects a mounted world is made
|
|
7
|
+
* of — the live `Object3D`/`Container`/DOM element, never an AST node. A walk
|
|
8
|
+
* always answers: an empty projection over a mounted world is a defect, never a
|
|
9
|
+
* fact.
|
|
10
|
+
*
|
|
11
|
+
* Only the shapes live here. The projectors themselves are per surface
|
|
12
|
+
* (`./three.ts`, `./pixi.ts`, `./dom.ts`), because what an
|
|
13
|
+
* object IS, how identity is minted and what an editor-owned object looks like
|
|
14
|
+
* are all surface facts.
|
|
15
|
+
*/
|
|
16
|
+
|
|
17
|
+
/**
|
|
18
|
+
* One projected authoring node.
|
|
19
|
+
*
|
|
20
|
+
* `parentId` is the nearest ADMITTED ancestor — not the runtime parent — so a
|
|
21
|
+
* projection that folds a library's internals into their owner reports the
|
|
22
|
+
* owner. `null` means this node is a root of the projection.
|
|
23
|
+
*/
|
|
24
|
+
export interface ProjectedNode<TObject> {
|
|
25
|
+
readonly object: TObject;
|
|
26
|
+
readonly id: string;
|
|
27
|
+
readonly parentId: string | null;
|
|
28
|
+
readonly childIds: string[];
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
/**
|
|
32
|
+
* One walk's product: every node by id, the roots in walk order, and whatever
|
|
33
|
+
* the surface counts about itself.
|
|
34
|
+
*
|
|
35
|
+
* `nodes` is keyed by the id the rest of the editor addresses the node by, so
|
|
36
|
+
* the id the gizmo binds to, the id the hierarchy row shows and the id
|
|
37
|
+
* `EditorShellStore.objectMap` indexes can never disagree — they are all this
|
|
38
|
+
* one map.
|
|
39
|
+
*/
|
|
40
|
+
export interface Projection<TObject, TStats> {
|
|
41
|
+
readonly nodes: Map<string, ProjectedNode<TObject>>;
|
|
42
|
+
readonly rootIds: string[];
|
|
43
|
+
readonly stats: TStats;
|
|
44
|
+
}
|
package/src/readiness.ts
ADDED
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* DECLARED READINESS, per root — the facet that makes "is this game ready?" an
|
|
3
|
+
* answer with a stated PROVENANCE instead of a host-side guess nobody can see.
|
|
4
|
+
*
|
|
5
|
+
* ARCHITECTURE-CORE §The editor protocol, "Zero inference". The question has
|
|
6
|
+
* exactly three answerers, and this module is where each one's answer lands:
|
|
7
|
+
*
|
|
8
|
+
* · `host-mount` — a HOST-MOUNTED (exported-composition) root. The host runs
|
|
9
|
+
* the mount, so mount completion IS readiness; no game code is needed and
|
|
10
|
+
* the answer is `declared` for every first-party project by construction.
|
|
11
|
+
* · `contract-ready` — a SELF-BOOTING game that declares
|
|
12
|
+
* `window.vgaiGame.ready` (`@volter/editor-project/adapter/ingest/game-contract`). Also
|
|
13
|
+
* `declared`: the game stated it.
|
|
14
|
+
* · `measured-wait` — a self-booting game that declares nothing. The measured
|
|
15
|
+
* waits remain (they are the documented fallback), and this is the whole
|
|
16
|
+
* point of the facet: that root reports `source: 'measured'`, so "nobody
|
|
17
|
+
* stated this" is a visible fact rather than silence.
|
|
18
|
+
*
|
|
19
|
+
* Published as the `readiness` facet of `/__editor/state`
|
|
20
|
+
* (`command-listener.ts`'s `collectState`), which is what `vgai status` reads.
|
|
21
|
+
*/
|
|
22
|
+
|
|
23
|
+
import type {
|
|
24
|
+
MountFailureKind,
|
|
25
|
+
ReadinessSource,
|
|
26
|
+
} from '@volter/editor-project/adapter/ingest/mount-readiness';
|
|
27
|
+
|
|
28
|
+
/** How a root's readiness is answered. See this module's header for each. */
|
|
29
|
+
export type ReadinessMechanism = 'host-mount' | 'contract-ready' | 'measured-wait';
|
|
30
|
+
|
|
31
|
+
export interface RootReadiness {
|
|
32
|
+
/** The manifest root id, as every other per-root facet names it. */
|
|
33
|
+
readonly rootId: string;
|
|
34
|
+
readonly mechanism: ReadinessMechanism;
|
|
35
|
+
/** `declared` for `host-mount`/`contract-ready`, `measured` otherwise — the
|
|
36
|
+
* one field that makes a fallback legible as a fallback. */
|
|
37
|
+
readonly source: ReadinessSource;
|
|
38
|
+
/** `waiting` is a real state, not a missing answer: a self-booting game on a
|
|
39
|
+
* hidden tab parks there indefinitely and nothing is wrong. */
|
|
40
|
+
readonly state: 'waiting' | 'ready' | 'failed';
|
|
41
|
+
/** Which of M29's three blockers, for a `failed` root. */
|
|
42
|
+
readonly failure?: MountFailureKind;
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
/**
|
|
46
|
+
* RESOURCE OWNERSHIP: one entry per root, written by the mount path that owns
|
|
47
|
+
* that root's lifecycle (`play-mode.ts` for host-mounted roots,
|
|
48
|
+
* `authoring/ingest-root-adapter.ts` for self-booting ones) and cleared by that
|
|
49
|
+
* same path's teardown. `clearRootReadiness` is per-root for the reason
|
|
50
|
+
* `clearMountFailureReport` is: a composite manifest mounts roots
|
|
51
|
+
* independently, and a blanket clear on one root's teardown would erase a
|
|
52
|
+
* sibling's still-true answer.
|
|
53
|
+
*/
|
|
54
|
+
const _readiness = new Map<string, RootReadiness>();
|
|
55
|
+
let _snapshot: readonly RootReadiness[] = [];
|
|
56
|
+
const _listeners = new Set<() => void>();
|
|
57
|
+
|
|
58
|
+
function publish(): void {
|
|
59
|
+
_snapshot = [..._readiness.values()];
|
|
60
|
+
for (const listener of _listeners) listener();
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
/** `useSyncExternalStore`-compatible subscription for viewport explanations. */
|
|
64
|
+
export function subscribeRootReadiness(listener: () => void): () => void {
|
|
65
|
+
_listeners.add(listener);
|
|
66
|
+
return () => _listeners.delete(listener);
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
export function recordRootReadiness(entry: RootReadiness): void {
|
|
70
|
+
_readiness.set(entry.rootId, entry);
|
|
71
|
+
publish();
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
export function clearRootReadiness(rootId: string): void {
|
|
75
|
+
if (!_readiness.delete(rootId)) return;
|
|
76
|
+
publish();
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
/** Test seam. Every production teardown clears PER ROOT (see the ownership note
|
|
80
|
+
* above), so nothing but a test has the whole map's lifetime to drop. */
|
|
81
|
+
export function clearAllRootReadiness(): void {
|
|
82
|
+
if (_readiness.size === 0) return;
|
|
83
|
+
_readiness.clear();
|
|
84
|
+
publish();
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
/**
|
|
88
|
+
* Every root's readiness, in the order they were recorded. `[]` means nothing
|
|
89
|
+
* has mounted — deliberately NOT the same as "nothing is ready", which is what
|
|
90
|
+
* a bare boolean would have said.
|
|
91
|
+
*/
|
|
92
|
+
export function readinessFacet(): readonly RootReadiness[] {
|
|
93
|
+
return _snapshot;
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
/**
|
|
97
|
+
* The one sentence a reader gets when a project's readiness is entirely
|
|
98
|
+
* measured — i.e. no root stated it and every answer here is a host-side wait.
|
|
99
|
+
* `null` when there is nothing to say (nothing mounted, or at least one root
|
|
100
|
+
* declared), because a warning that fires on healthy projects is a warning
|
|
101
|
+
* people learn to skip.
|
|
102
|
+
*/
|
|
103
|
+
export function measuredReadinessWarning(): string | null {
|
|
104
|
+
const entries = readinessFacet();
|
|
105
|
+
if (entries.length === 0) return null;
|
|
106
|
+
const measured = entries.filter((entry) => entry.source === 'measured');
|
|
107
|
+
if (measured.length === 0) return null;
|
|
108
|
+
return (
|
|
109
|
+
`${measured.length} of ${entries.length} root(s) have NO readiness declaration ` +
|
|
110
|
+
`(${measured.map((entry) => entry.rootId).join(', ')}) — the host is measuring instead. ` +
|
|
111
|
+
'A self-booting game states it with `window.vgaiGame.ready`.'
|
|
112
|
+
);
|
|
113
|
+
}
|
|
@@ -0,0 +1,142 @@
|
|
|
1
|
+
import { EDITOR_LAYER } from '@volter/editor-threejs/viewport/editor-layers';
|
|
2
|
+
import { reflectionProbeOf } from '@volter/editor-threejs/adapter/reflection-probe';
|
|
3
|
+
import { setUserData } from '@volter/editor-threejs/ecs/user-data';
|
|
4
|
+
import * as THREE from 'three';
|
|
5
|
+
|
|
6
|
+
const INFLUENCE = new THREE.Color(0x4aa8ff);
|
|
7
|
+
const INFLUENCE_SELECTED = new THREE.Color(0x75c4ff);
|
|
8
|
+
const PARALLAX = new THREE.Color(0xffb84a);
|
|
9
|
+
const CAPTURE = new THREE.Color(0xffffff);
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* Editor-only visualization for a project-owned reflection probe. It follows
|
|
13
|
+
* the live Object3D mark but owns every line and material it draws, so no
|
|
14
|
+
* helper enters the game's JSX tree or its runtime camera.
|
|
15
|
+
*/
|
|
16
|
+
export class ReflectionProbeHelper extends THREE.Group {
|
|
17
|
+
private signature = '';
|
|
18
|
+
private selected = false;
|
|
19
|
+
|
|
20
|
+
constructor(readonly source: THREE.Object3D) {
|
|
21
|
+
super();
|
|
22
|
+
this.name = 'Reflection Probe Helper';
|
|
23
|
+
this.matrixAutoUpdate = false;
|
|
24
|
+
this.renderOrder = 998;
|
|
25
|
+
setUserData(this, 'editorHelper', true);
|
|
26
|
+
setUserData(this, 'editorHelperType', 'reflection-probes');
|
|
27
|
+
this.layers.set(EDITOR_LAYER);
|
|
28
|
+
this.refresh(true);
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
setSelected(selected: boolean): void {
|
|
32
|
+
if (this.selected === selected) return;
|
|
33
|
+
this.selected = selected;
|
|
34
|
+
this.refresh(true);
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
update(): void {
|
|
38
|
+
this.refresh(false);
|
|
39
|
+
this.source.updateWorldMatrix(true, false);
|
|
40
|
+
this.matrix.copy(this.source.matrixWorld);
|
|
41
|
+
this.matrixWorldNeedsUpdate = true;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
dispose(): void {
|
|
45
|
+
this.clearVisuals();
|
|
46
|
+
this.removeFromParent();
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
// biome-ignore lint/complexity/noExcessiveCognitiveComplexity: each branch draws one independently meaningful probe volume.
|
|
50
|
+
private refresh(force: boolean): void {
|
|
51
|
+
const probe = reflectionProbeOf(this.source);
|
|
52
|
+
if (!probe) return;
|
|
53
|
+
const config = probe.config;
|
|
54
|
+
const next = JSON.stringify(config);
|
|
55
|
+
if (!force && next === this.signature) return;
|
|
56
|
+
this.signature = next;
|
|
57
|
+
this.clearVisuals();
|
|
58
|
+
|
|
59
|
+
const influenceColor = this.selected ? INFLUENCE_SELECTED : INFLUENCE;
|
|
60
|
+
const influenceOpacity = this.selected ? 1 : 0.62;
|
|
61
|
+
const blend = Math.max(0, config.blendDistance);
|
|
62
|
+
|
|
63
|
+
if (config.shape === 'sphere') {
|
|
64
|
+
const radius = Math.max(0.01, config.radius);
|
|
65
|
+
this.addWire(new THREE.SphereGeometry(radius, 24, 16), influenceColor, influenceOpacity);
|
|
66
|
+
if (blend > 0 && radius - blend > 0.01) {
|
|
67
|
+
this.addWire(
|
|
68
|
+
new THREE.SphereGeometry(radius - blend, 20, 12),
|
|
69
|
+
influenceColor,
|
|
70
|
+
this.selected ? 0.55 : 0.28,
|
|
71
|
+
);
|
|
72
|
+
}
|
|
73
|
+
} else {
|
|
74
|
+
const [x, y, z] = config.size.map((value) => Math.max(0.01, value)) as [
|
|
75
|
+
number,
|
|
76
|
+
number,
|
|
77
|
+
number,
|
|
78
|
+
];
|
|
79
|
+
this.addWire(new THREE.BoxGeometry(x, y, z), influenceColor, influenceOpacity);
|
|
80
|
+
const inner = [x - blend * 2, y - blend * 2, z - blend * 2] as const;
|
|
81
|
+
if (blend > 0 && inner.every((value) => value > 0.01)) {
|
|
82
|
+
this.addWire(
|
|
83
|
+
new THREE.BoxGeometry(inner[0], inner[1], inner[2]),
|
|
84
|
+
influenceColor,
|
|
85
|
+
this.selected ? 0.55 : 0.28,
|
|
86
|
+
);
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
if (config.parallaxProjection) {
|
|
91
|
+
const [x, y, z] = config.parallaxSize.map((value) => Math.max(0.01, value)) as [
|
|
92
|
+
number,
|
|
93
|
+
number,
|
|
94
|
+
number,
|
|
95
|
+
];
|
|
96
|
+
const box = this.addWire(
|
|
97
|
+
new THREE.BoxGeometry(x, y, z),
|
|
98
|
+
PARALLAX,
|
|
99
|
+
this.selected ? 0.9 : 0.45,
|
|
100
|
+
);
|
|
101
|
+
box.position.fromArray(config.parallaxOffset);
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
const origin = this.addWire(
|
|
105
|
+
new THREE.OctahedronGeometry(this.selected ? 0.16 : 0.11),
|
|
106
|
+
CAPTURE,
|
|
107
|
+
this.selected ? 1 : 0.72,
|
|
108
|
+
);
|
|
109
|
+
origin.position.fromArray(config.captureOffset);
|
|
110
|
+
this.traverse((object) => object.layers.set(EDITOR_LAYER));
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
private addWire(
|
|
114
|
+
sourceGeometry: THREE.BufferGeometry,
|
|
115
|
+
color: THREE.Color,
|
|
116
|
+
opacity: number,
|
|
117
|
+
): THREE.LineSegments {
|
|
118
|
+
const geometry = new THREE.EdgesGeometry(sourceGeometry);
|
|
119
|
+
sourceGeometry.dispose();
|
|
120
|
+
const material = new THREE.LineBasicMaterial({
|
|
121
|
+
color,
|
|
122
|
+
depthTest: false,
|
|
123
|
+
transparent: true,
|
|
124
|
+
opacity,
|
|
125
|
+
toneMapped: false,
|
|
126
|
+
});
|
|
127
|
+
const wire = new THREE.LineSegments(geometry, material);
|
|
128
|
+
wire.renderOrder = this.renderOrder;
|
|
129
|
+
this.add(wire);
|
|
130
|
+
return wire;
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
private clearVisuals(): void {
|
|
134
|
+
for (const child of [...this.children]) {
|
|
135
|
+
child.removeFromParent();
|
|
136
|
+
const line = child as THREE.LineSegments;
|
|
137
|
+
line.geometry?.dispose();
|
|
138
|
+
const materials = Array.isArray(line.material) ? line.material : [line.material];
|
|
139
|
+
for (const material of materials) material?.dispose();
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
}
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Honest play-state reporting for the control API (`vgai status`) — the
|
|
3
|
+
* derivation half of the SimCity ledger's S-1 "false-alive ingest status".
|
|
4
|
+
*
|
|
5
|
+
* ## The defect this closes
|
|
6
|
+
*
|
|
7
|
+
* `EditorShellStore.playState` is EDITOR UI STATE. Every lane that mounts
|
|
8
|
+
* something writes `'playing'` into it, but only play mode's write is
|
|
9
|
+
* accompanied by a live `play-mode.ts` `_session`, which is the predicate the
|
|
10
|
+
* whole debug seam gates on (`isPlayModeActive()`, `command-listener.ts`'s
|
|
11
|
+
* `notPlayingResult`). `collectState` reported the store flag verbatim, so a
|
|
12
|
+
* mounted lane printed `playState: "playing"` while every `game.state()` /
|
|
13
|
+
* `game.command()` call refused with "not in play mode" — the two predicates
|
|
14
|
+
* disagreeing in the same breath.
|
|
15
|
+
*
|
|
16
|
+
* Worse, a lane sets `'playing'` BEFORE the mount is attempted (it is what
|
|
17
|
+
* swaps the viewport onto the live scene). A mount that then threw left the
|
|
18
|
+
* flag behind, so a DEAD game reported itself alive.
|
|
19
|
+
*
|
|
20
|
+
* ## The rule
|
|
21
|
+
*
|
|
22
|
+
* A reported play state is a claim about something that is actually running,
|
|
23
|
+
* so it is derived from the LIVE-SESSION REGISTRY (`live-session-registry.ts`)
|
|
24
|
+
* — the host's one question about what runs — never from the UI flag alone,
|
|
25
|
+
* and it names no lane:
|
|
26
|
+
*
|
|
27
|
+
* - nothing mounted is `stopped`, whatever the stale flag says;
|
|
28
|
+
* - a mount whose lane was not asked to run is `paused` — a freshly mounted,
|
|
29
|
+
* still-cold session is `paused`, not `playing`;
|
|
30
|
+
* - otherwise the store flag, which for a running lane is written in lockstep.
|
|
31
|
+
*
|
|
32
|
+
* Pure and injectable so the whole decision is unit-testable with no browser
|
|
33
|
+
* (`packages/editor/test/ingest-status.test.ts`).
|
|
34
|
+
*
|
|
35
|
+
* ## Why this is not folded back into the store's getter
|
|
36
|
+
*
|
|
37
|
+
* Because the two answer different questions, and the store's is the one the
|
|
38
|
+
* editor itself needs. `isPlayModeActive()` is `_instance.session !== null`,
|
|
39
|
+
* assigned only after the mount resolves — so a derived `store.playState` would
|
|
40
|
+
* read `'stopped'` for the whole play boot (manifest fetch, entry resolution,
|
|
41
|
+
* the mount itself), and the structural-edit block, the design session's
|
|
42
|
+
* suspend, the Play bar and the viewport-tab predicates would all act as though
|
|
43
|
+
* nothing were starting. The store's flag stays the editor's MODE; this stays
|
|
44
|
+
* the report.
|
|
45
|
+
*/
|
|
46
|
+
|
|
47
|
+
import type { MountFailureReport } from './authoring/mount-failure-report';
|
|
48
|
+
|
|
49
|
+
/** The vocabulary `EditorShellStore.playState` and the SDK's status both use. */
|
|
50
|
+
export type ReportedPlayState = 'stopped' | 'playing' | 'paused';
|
|
51
|
+
|
|
52
|
+
/** Everything the derivation reads. Assembled by the caller from the live
|
|
53
|
+
* module singletons so this module itself imports no session state. */
|
|
54
|
+
export interface LiveSurfaceFacts {
|
|
55
|
+
/** `EditorShellStore.playState` — the UI flag, used only where it is backed. */
|
|
56
|
+
readonly storePlayState: ReportedPlayState;
|
|
57
|
+
/** `live-session-registry.ts`: some lane owns a canvas right now. */
|
|
58
|
+
readonly liveMounted: boolean;
|
|
59
|
+
/** `live-session-registry.ts`: some lane was asked to RUN content. */
|
|
60
|
+
readonly livePlaying: boolean;
|
|
61
|
+
/** Recorded mount failures (`authoring/mount-failure-report.ts`). */
|
|
62
|
+
readonly mountFailures: readonly MountFailureReport[];
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
/**
|
|
66
|
+
* The reported play state — derived from what is actually running, asked of
|
|
67
|
+
* the live-session registry so no lane is named: a held mount (a mounted game
|
|
68
|
+
* whose loop is stopped) is `paused`; a running one reports the store's
|
|
69
|
+
* playing/paused; nothing mounted is `stopped` whatever the store says.
|
|
70
|
+
*/
|
|
71
|
+
export function deriveReportedPlayState(facts: LiveSurfaceFacts): ReportedPlayState {
|
|
72
|
+
if (!facts.liveMounted) {
|
|
73
|
+
// Nothing is running. A leftover `'playing'`/`'paused'` here is exactly
|
|
74
|
+
// the false-alive report S-1 is about — a mount that threw after setting
|
|
75
|
+
// the flag.
|
|
76
|
+
return 'stopped';
|
|
77
|
+
}
|
|
78
|
+
if (!facts.livePlaying) return 'paused';
|
|
79
|
+
return facts.storePlayState === 'paused' ? 'paused' : 'playing';
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
/**
|
|
83
|
+
* True when the editor is reporting a world that FAILED to mount and has no
|
|
84
|
+
* live session to replace it. Consumers surface this as the "dead game" signal
|
|
85
|
+
* (`vgai status`'s `mountFailures`, the status bar's mount-failure item)
|
|
86
|
+
* rather than making a reader diff two other fields to notice.
|
|
87
|
+
*/
|
|
88
|
+
export function hasDeadMount(facts: LiveSurfaceFacts): boolean {
|
|
89
|
+
return facts.mountFailures.length > 0 && !facts.liveMounted;
|
|
90
|
+
}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Resolve a RELATIVE import specifier against an index of known project
|
|
3
|
+
* paths — the extensionless-import answer (`./x` → `x.tsx`/`x.ts`/index
|
|
4
|
+
* variants) answered from a REAL index, never by guessing an extension onto
|
|
5
|
+
* a path. `null` when the specifier is not relative or nothing in the index
|
|
6
|
+
* matches. The one algorithm behind both the component index and the
|
|
7
|
+
* project adapter's module resolver; two copies of the candidate list is
|
|
8
|
+
* how play and the finders disagree about which module a specifier names.
|
|
9
|
+
*/
|
|
10
|
+
export function resolveRelativeSpecifier(
|
|
11
|
+
specifier: string,
|
|
12
|
+
fromPath: string,
|
|
13
|
+
paths: ReadonlySet<string>,
|
|
14
|
+
): string | null {
|
|
15
|
+
if (!specifier.startsWith('.')) return null;
|
|
16
|
+
const dir = fromPath.replaceAll('\\', '/').split('/').slice(0, -1);
|
|
17
|
+
for (const segment of specifier.split('/')) {
|
|
18
|
+
if (segment === '.' || segment === '') continue;
|
|
19
|
+
if (segment === '..') dir.pop();
|
|
20
|
+
else dir.push(segment);
|
|
21
|
+
}
|
|
22
|
+
const base = dir.join('/');
|
|
23
|
+
for (const candidate of [
|
|
24
|
+
base,
|
|
25
|
+
`${base}.tsx`,
|
|
26
|
+
`${base}.ts`,
|
|
27
|
+
`${base}/index.tsx`,
|
|
28
|
+
`${base}/index.ts`,
|
|
29
|
+
]) {
|
|
30
|
+
if (paths.has(candidate)) return candidate;
|
|
31
|
+
}
|
|
32
|
+
return null;
|
|
33
|
+
}
|