@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,145 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A CONTRIBUTED DOCUMENT KIND OWNS ITS OWN PERSISTED STATE — the other half
|
|
3
|
+
* of `WorkspaceDocumentDescriptor.persist` (docs/WORKBENCH.md §host versus
|
|
4
|
+
* package).
|
|
5
|
+
*
|
|
6
|
+
* THE RULE. `workspace-state-persistence.ts` stores, per open document, an
|
|
7
|
+
* OPAQUE blob under that document's kind and id. It never reads inside the
|
|
8
|
+
* blob and it names no document module: on the next boot it looks the kind up
|
|
9
|
+
* here and hands the blob back. A kind with no restorer registered — a module
|
|
10
|
+
* that is gone, a package this project no longer depends on, a record written
|
|
11
|
+
* by another build — restores NOTHING, silently. That is the entire
|
|
12
|
+
* compatibility story for a blob: it carries no version field of its own and
|
|
13
|
+
* no migration.
|
|
14
|
+
*
|
|
15
|
+
* WHY IT EXISTS. Before this, the host switched on every document kind by
|
|
16
|
+
* name (the story documents and their registry, the adapter-table documents,
|
|
17
|
+
* the tool documents, the asset documents), so moving ANY of them into a
|
|
18
|
+
* package meant editing that one host file — which serialized every
|
|
19
|
+
* extraction against every other, and reverted one of them rather than land
|
|
20
|
+
* a half-move (measured 2026-09-18).
|
|
21
|
+
*
|
|
22
|
+
* WHAT A RESTORER IS FOR. `restore` reopens ONE document from its own blob
|
|
23
|
+
* and answers whether it could: `false` is the honest answer for a module
|
|
24
|
+
* that no longer loads, a story that is no longer exported, a file that is
|
|
25
|
+
* gone. Verification belongs HERE, not in the host, because only the kind
|
|
26
|
+
* knows what "still true" means for its subject. `prepare` is the kind's own
|
|
27
|
+
* async settling step (refresh the registry this kind reads), awaited ONCE
|
|
28
|
+
* before its documents restore and only when at least one is present.
|
|
29
|
+
* `persistKindState`/`beginRestore` carry the state that belongs to the KIND
|
|
30
|
+
* rather than to one open document — a discovery baseline, a "what opens when
|
|
31
|
+
* this project has never recorded anything" rule.
|
|
32
|
+
*/
|
|
33
|
+
|
|
34
|
+
import type { ViewportTab } from './editor-shell-store';
|
|
35
|
+
|
|
36
|
+
/** The narrow store surface every document open function declares (the T6.3
|
|
37
|
+
* input-gate hand-off). Defined here, beside the restore seam, so a document
|
|
38
|
+
* module can accept it without importing the persistence host. */
|
|
39
|
+
export interface WorkspaceStateStore {
|
|
40
|
+
setActiveViewportTab(tab: ViewportTab): void;
|
|
41
|
+
/** Live play state — the write-through gate reads it so no layout write can
|
|
42
|
+
* land while a game is playing/paused, even if the play-transition
|
|
43
|
+
* suppression flag is momentarily out of phase during a chaotic teardown
|
|
44
|
+
* (a transient-renderer error-boundary rebuild that tears play down and
|
|
45
|
+
* re-enters). Optional so unit-test fakes need not supply it (treated as
|
|
46
|
+
* 'stopped'). */
|
|
47
|
+
readonly playState?: 'stopped' | 'playing' | 'paused';
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
/** What {@link WorkspaceDocumentRestorer.restore} is handed for one document. */
|
|
51
|
+
export interface WorkspaceDocumentRestoreContext {
|
|
52
|
+
/** The document id that was open — the same id `persist` was called under. */
|
|
53
|
+
readonly id: string;
|
|
54
|
+
/** Exactly what this document's `persist` returned last session. Opaque to
|
|
55
|
+
* the host, so a restorer must treat it as untrusted input. */
|
|
56
|
+
readonly state: unknown;
|
|
57
|
+
/** Whether this document was the ACTIVE tab. A kind that opens
|
|
58
|
+
* asynchronously must activate itself, because the host has already asked
|
|
59
|
+
* for the stored active id by the time a late open lands. */
|
|
60
|
+
readonly active: boolean;
|
|
61
|
+
readonly store: WorkspaceStateStore;
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
/** What {@link WorkspaceDocumentRestorer.beginRestore} is handed, once per
|
|
65
|
+
* session, for every registered kind. */
|
|
66
|
+
export interface WorkspaceDocumentKindRestoreContext {
|
|
67
|
+
/** Whatever `persistKindState` returned last session, or `undefined`. */
|
|
68
|
+
readonly state: unknown;
|
|
69
|
+
/**
|
|
70
|
+
* Whether this session has any persisted document to BRING BACK. `false` is
|
|
71
|
+
* the moment a kind may open the project's own default document.
|
|
72
|
+
*
|
|
73
|
+
* It used to ask a narrower question — "does this project have a documents
|
|
74
|
+
* record at all" — and the two decorrelate in the one case that hurts: a
|
|
75
|
+
* record that EXISTS and lists nothing. Closing the last document writes
|
|
76
|
+
* exactly that (`{"open":[],"activeId":"tool:blender-timeline.document"}`,
|
|
77
|
+
* measured on a `model-editor create` scaffold, walk 5 beat 0), and from
|
|
78
|
+
* then on every boot of that project restored nothing, opened no default,
|
|
79
|
+
* and left the workspace with no document a person is in — which on the
|
|
80
|
+
* model editor is the product's cover waiting out its whole 90 s budget and
|
|
81
|
+
* then blaming Blender for a model nobody ever asked it to open. A closed
|
|
82
|
+
* tab is not a standing instruction across page loads; "nothing to restore"
|
|
83
|
+
* is one fact however the record spells it.
|
|
84
|
+
*/
|
|
85
|
+
readonly hasDocumentsToRestore: boolean;
|
|
86
|
+
readonly store: WorkspaceStateStore;
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
export interface WorkspaceDocumentRestorer {
|
|
90
|
+
/** The `WorkspaceDocumentDescriptor.kind` this restores. Several modules
|
|
91
|
+
* may share one kind (a `world` is a three story here and a manifest root
|
|
92
|
+
* there); each registers its own restorer and the host tries them in
|
|
93
|
+
* registration order until one answers `true`. */
|
|
94
|
+
readonly kind: string;
|
|
95
|
+
/** Which module owns it. Re-registering the same owner+kind REPLACES, so a
|
|
96
|
+
* module re-evaluated by HMR leaves one restorer, not two. */
|
|
97
|
+
readonly owner: string;
|
|
98
|
+
/** Awaited once before this kind's documents restore, and only when the
|
|
99
|
+
* record holds at least one. Restorers that share a settling step share
|
|
100
|
+
* the FUNCTION (the host dedupes by identity), so one refresh runs once. */
|
|
101
|
+
readonly prepare?: () => Promise<void>;
|
|
102
|
+
/** Reopen one persisted document. `false` = it cannot truthfully reopen,
|
|
103
|
+
* and the stale entry is reconciled away. */
|
|
104
|
+
readonly restore: (context: WorkspaceDocumentRestoreContext) => boolean | Promise<boolean>;
|
|
105
|
+
/** This kind's own session state, persisted beside the open set under the
|
|
106
|
+
* kind key. Read on every write-through, so keep it cheap. */
|
|
107
|
+
readonly persistKindState?: () => unknown;
|
|
108
|
+
/** Called once per session for EVERY registered kind, before the persisted
|
|
109
|
+
* documents reopen — whether or not this kind has any. */
|
|
110
|
+
readonly beginRestore?: (context: WorkspaceDocumentKindRestoreContext) => void;
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
const _restorers = new Map<string, WorkspaceDocumentRestorer[]>();
|
|
114
|
+
|
|
115
|
+
/** Install a kind's restorer. Returns the teardown. */
|
|
116
|
+
export function registerWorkspaceDocumentRestorer(restorer: WorkspaceDocumentRestorer): () => void {
|
|
117
|
+
const existing = _restorers.get(restorer.kind) ?? [];
|
|
118
|
+
const next = existing.filter((item) => item.owner !== restorer.owner);
|
|
119
|
+
next.push(restorer);
|
|
120
|
+
_restorers.set(restorer.kind, next);
|
|
121
|
+
return () => {
|
|
122
|
+
const current = _restorers.get(restorer.kind);
|
|
123
|
+
if (!current) return;
|
|
124
|
+
const remaining = current.filter((item) => item !== restorer);
|
|
125
|
+
if (remaining.length === 0) _restorers.delete(restorer.kind);
|
|
126
|
+
else _restorers.set(restorer.kind, remaining);
|
|
127
|
+
};
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
/** Every restorer registered for `kind`, in registration order. */
|
|
131
|
+
export function workspaceDocumentRestorers(kind: string): readonly WorkspaceDocumentRestorer[] {
|
|
132
|
+
return _restorers.get(kind) ?? [];
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
/** Every registered restorer, in kind registration order. */
|
|
136
|
+
export function workspaceDocumentRestorerEntries(): readonly WorkspaceDocumentRestorer[] {
|
|
137
|
+
const all: WorkspaceDocumentRestorer[] = [];
|
|
138
|
+
for (const list of _restorers.values()) all.push(...list);
|
|
139
|
+
return all;
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
/** Test-only reset (mirrors the document registry's own). */
|
|
143
|
+
export function __resetWorkspaceDocumentRestorersForTest(): void {
|
|
144
|
+
_restorers.clear();
|
|
145
|
+
}
|
|
@@ -0,0 +1,141 @@
|
|
|
1
|
+
import type { WorkspaceStaticPanelKind } from './workspace-static-panels';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* THE IMPERATIVE BOUNDARY between the editor's semantic commands and whatever
|
|
5
|
+
* layout host is mounted — today the Code-OSS frame, which installs the
|
|
6
|
+
* implementations from `frame/bridge.tsx` and answers them with the
|
|
7
|
+
* workbench's own views and editor groups.
|
|
8
|
+
*
|
|
9
|
+
* Callers ask to reveal a capability by stable ID and never encode its current
|
|
10
|
+
* coordinates: a person may have moved that view since startup, and the host
|
|
11
|
+
* is the only thing that knows where it is now. A command asked before a host
|
|
12
|
+
* has installed is QUEUED and flushes on the install, so a startup gesture is
|
|
13
|
+
* never lost to boot order.
|
|
14
|
+
*/
|
|
15
|
+
|
|
16
|
+
export interface WorkspaceHostCommands {
|
|
17
|
+
/** Capture only the utility presentation a temporary layout behavior will change. */
|
|
18
|
+
captureUtilities?(ids: readonly string[]): () => void;
|
|
19
|
+
/** Focus one of the editor's built-in persistent panels. The vocabulary is
|
|
20
|
+
* the static-panel REGISTRY (`workspace-static-panels.ts`) — the host maps
|
|
21
|
+
* a kind to its own surface, and no caller keeps a second list. */
|
|
22
|
+
showStaticPanel(kind: WorkspaceStaticPanelKind): void;
|
|
23
|
+
/** Materialize an on-demand utility tab without opening the utility region:
|
|
24
|
+
* the drawer presents itself collapsed to its tab strip, so the new tab and
|
|
25
|
+
* its badge are discoverable while the body stays closed. */
|
|
26
|
+
ensureUtility?(id: string): void;
|
|
27
|
+
showUtility(id: string): void;
|
|
28
|
+
toggleUtility(id: string): void;
|
|
29
|
+
/** Remove a transient utility from wherever the host put it. Hosts restore
|
|
30
|
+
* the utility that was active before it was revealed, or collapse the
|
|
31
|
+
* utility region when it was opened only for this one. */
|
|
32
|
+
closeUtility?(id: string): void;
|
|
33
|
+
showAuxiliary(id: 'undo-history'): void;
|
|
34
|
+
toggleFocus(): void;
|
|
35
|
+
setFocus?(focused: boolean): void;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
let commands: WorkspaceHostCommands | null = null;
|
|
39
|
+
let pending: Array<(value: WorkspaceHostCommands) => void> = [];
|
|
40
|
+
let activeUtilityId: string | null = null;
|
|
41
|
+
let activeStaticPanel: WorkspaceStaticPanelKind | null = null;
|
|
42
|
+
let _utilityVersion = 0;
|
|
43
|
+
const utilityListeners = new Set<() => void>();
|
|
44
|
+
let utilityTabIds: readonly string[] = [];
|
|
45
|
+
const utilityTabsListeners = new Set<() => void>();
|
|
46
|
+
|
|
47
|
+
export function setActiveWorkspaceUtility(id: string | null): void {
|
|
48
|
+
if (activeUtilityId === id) return;
|
|
49
|
+
activeUtilityId = id;
|
|
50
|
+
_utilityVersion++;
|
|
51
|
+
for (const listener of utilityListeners) listener();
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
export function activeWorkspaceUtility(): string | null {
|
|
55
|
+
return activeUtilityId;
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
export function subscribeActiveWorkspaceUtility(listener: () => void): () => void {
|
|
59
|
+
utilityListeners.add(listener);
|
|
60
|
+
return () => utilityListeners.delete(listener);
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
/** The static panel holding the dock's focus, or `null` when a document or a
|
|
64
|
+
* drawer utility does. The dock reports it from its own active-panel event,
|
|
65
|
+
* so this is what a human is looking at — not the last thing asked for. */
|
|
66
|
+
export function setActiveWorkspaceStaticPanel(kind: WorkspaceStaticPanelKind | null): void {
|
|
67
|
+
activeStaticPanel = kind;
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
export function activeWorkspaceStaticPanel(): WorkspaceStaticPanelKind | null {
|
|
71
|
+
return activeStaticPanel;
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
/** The utility tabs the host currently holds, in its own order. The host owns
|
|
75
|
+
* the tab strip's presentation; this list is the semantic readout of it
|
|
76
|
+
* (stories, and callers asking what exists). */
|
|
77
|
+
export function setWorkspaceUtilityTabs(ids: readonly string[]): void {
|
|
78
|
+
if (
|
|
79
|
+
ids.length === utilityTabIds.length &&
|
|
80
|
+
ids.every((id, index) => id === utilityTabIds[index])
|
|
81
|
+
) {
|
|
82
|
+
return;
|
|
83
|
+
}
|
|
84
|
+
utilityTabIds = [...ids];
|
|
85
|
+
for (const listener of utilityTabsListeners) listener();
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
export function workspaceUtilityTabs(): readonly string[] {
|
|
89
|
+
return utilityTabIds;
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
function invoke(operation: (value: WorkspaceHostCommands) => void): void {
|
|
93
|
+
if (commands) operation(commands);
|
|
94
|
+
else pending.push(operation);
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
export function installWorkspaceHostCommands(next: WorkspaceHostCommands): () => void {
|
|
98
|
+
commands = next;
|
|
99
|
+
const queued = pending;
|
|
100
|
+
pending = [];
|
|
101
|
+
for (const operation of queued) operation(next);
|
|
102
|
+
return () => {
|
|
103
|
+
if (commands === next) commands = null;
|
|
104
|
+
};
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
export function showWorkspaceUtility(id: string): void {
|
|
108
|
+
invoke((value) => value.showUtility(id));
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
export function ensureWorkspaceUtility(id: string): void {
|
|
112
|
+
invoke((value) => value.ensureUtility?.(id));
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
export function showWorkspaceStaticPanel(kind: WorkspaceStaticPanelKind): void {
|
|
116
|
+
invoke((value) => value.showStaticPanel(kind));
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
export function toggleWorkspaceUtility(id: string): void {
|
|
120
|
+
invoke((value) => value.toggleUtility(id));
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
export function closeWorkspaceUtility(id: string): void {
|
|
124
|
+
invoke((value) => value.closeUtility?.(id));
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
export function showWorkspaceAuxiliary(id: 'undo-history'): void {
|
|
128
|
+
invoke((value) => value.showAuxiliary(id));
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
export function toggleWorkspaceFocus(): void {
|
|
132
|
+
invoke((value) => value.toggleFocus());
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
export function setWorkspaceFocus(focused: boolean): void {
|
|
136
|
+
invoke((value) => value.setFocus?.(focused));
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
export function captureWorkspaceUtilities(ids: readonly string[]): () => void {
|
|
140
|
+
return commands?.captureUtilities?.(ids) ?? (() => {});
|
|
141
|
+
}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Tiny shared gate: while suppressed, workspace-layout persistence
|
|
3
|
+
* (`workspace-state-persistence.ts`) drops every write-through/flush.
|
|
4
|
+
*
|
|
5
|
+
* Immersive Glass + Floating play hides the dock chrome for the whole play
|
|
6
|
+
* session (`play-transition.ts`); the resulting hidden-group layout is
|
|
7
|
+
* transient presentation, not user intent, and must never overwrite the
|
|
8
|
+
* saved layout — including via the `pagehide` flush if the tab closes
|
|
9
|
+
* mid-play. Classic/Docked play never enables this gate. Kept in its
|
|
10
|
+
* own module (not in workspace-state-persistence.ts) so play-transition can
|
|
11
|
+
* set it without importing the persistence module's heavy dependency graph.
|
|
12
|
+
*
|
|
13
|
+
* The flag lives on `globalThis`, not a module-local `let`: the play-mode
|
|
14
|
+
* boot path dynamically imports the project bundle (`play-mode.ts`'s
|
|
15
|
+
* `/@fs/…?t=…` / `import(modulePath)`), and Vite dev can then serve a SECOND
|
|
16
|
+
* evaluated copy of this gate module through that graph. A module-local flag
|
|
17
|
+
* would split — `play-transition` setting `true` on one copy while
|
|
18
|
+
* `workspace-state-persistence` reads `false` on the other (proven: the
|
|
19
|
+
* hidden-chrome layout leaked into localStorage during play, 71-play-
|
|
20
|
+
* transition). A single `globalThis` cell is shared by every copy and is a
|
|
21
|
+
* plain boolean in production (no duplication, zero overhead).
|
|
22
|
+
*/
|
|
23
|
+
|
|
24
|
+
const GATE_KEY = '__vgaiWorkspacePersistenceSuppressed';
|
|
25
|
+
|
|
26
|
+
interface GateHost {
|
|
27
|
+
[GATE_KEY]?: boolean;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
function host(): GateHost {
|
|
31
|
+
return globalThis as unknown as GateHost;
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
export function setWorkspacePersistenceSuppressed(suppressed: boolean): void {
|
|
35
|
+
host()[GATE_KEY] = suppressed;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
export function isWorkspacePersistenceSuppressed(): boolean {
|
|
39
|
+
return host()[GATE_KEY] === true;
|
|
40
|
+
}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { adapterEditorConfiguration } from './adapter-editor-config';
|
|
2
|
+
import { editorConsole } from './editor-console';
|
|
3
|
+
import { layoutPolicy } from './layout-policy';
|
|
4
|
+
import { captureWorkspaceUtilities, showWorkspaceUtility } from './workspace-host-commands';
|
|
5
|
+
import { activeChromeRegions } from './workspace-regions';
|
|
6
|
+
import { availableWorkspaceUtilities } from './workspace-utility-registry';
|
|
7
|
+
|
|
8
|
+
let contributionsReady = false;
|
|
9
|
+
let pending: readonly string[] = [];
|
|
10
|
+
let restore: (() => void) | undefined;
|
|
11
|
+
|
|
12
|
+
function flush(): void {
|
|
13
|
+
if (!contributionsReady || pending.length === 0) return;
|
|
14
|
+
const requested = pending;
|
|
15
|
+
pending = [];
|
|
16
|
+
if (activeChromeRegions().drawer === 'hidden') return;
|
|
17
|
+
restore ??= captureWorkspaceUtilities(requested);
|
|
18
|
+
const available = new Set(availableWorkspaceUtilities().map((utility) => utility.id));
|
|
19
|
+
for (const id of requested) {
|
|
20
|
+
if (available.has(id)) showWorkspaceUtility(id);
|
|
21
|
+
else
|
|
22
|
+
editorConsole.error(
|
|
23
|
+
`vgai.adapter.ts: editor.playUtilities names unavailable utility "${id}".`,
|
|
24
|
+
'adapter',
|
|
25
|
+
);
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
/** Discovery may finish after Play. No contribution kind implicitly opens a panel. */
|
|
30
|
+
export function publishPlayUtilitiesReady(ready: boolean): void {
|
|
31
|
+
contributionsReady = ready;
|
|
32
|
+
flush();
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
export function revealWorkspacePlayUtilities(): void {
|
|
36
|
+
pending = layoutPolicy()?.playUtilities ?? adapterEditorConfiguration().playUtilities ?? [];
|
|
37
|
+
flush();
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
export function cancelPendingWorkspacePlayUtilities(): void {
|
|
41
|
+
pending = [];
|
|
42
|
+
restore?.();
|
|
43
|
+
restore = undefined;
|
|
44
|
+
}
|