@fps-games/editor 0.2.1-beta.3 → 0.2.1-beta.4
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/dist/build-info.json +44 -44
- package/dist/editor-commands/capabilities/assets.d.ts +8 -0
- package/dist/editor-commands/capabilities/assets.d.ts.map +1 -0
- package/dist/{agent-bridge → editor-commands}/capabilities/assets.js +41 -41
- package/dist/editor-commands/capabilities/assets.js.map +1 -0
- package/dist/editor-commands/capabilities/editor-state.d.ts +5 -0
- package/dist/editor-commands/capabilities/editor-state.d.ts.map +1 -0
- package/dist/{agent-bridge → editor-commands}/capabilities/editor-state.js +22 -22
- package/dist/editor-commands/capabilities/editor-state.js.map +1 -0
- package/dist/editor-commands/capabilities/hierarchy.d.ts +4 -0
- package/dist/editor-commands/capabilities/hierarchy.d.ts.map +1 -0
- package/dist/{agent-bridge → editor-commands}/capabilities/hierarchy.js +5 -5
- package/dist/editor-commands/capabilities/hierarchy.js.map +1 -0
- package/dist/editor-commands/capabilities/host-lifecycle.d.ts +11 -0
- package/dist/editor-commands/capabilities/host-lifecycle.d.ts.map +1 -0
- package/dist/editor-commands/capabilities/host-lifecycle.js +149 -0
- package/dist/editor-commands/capabilities/host-lifecycle.js.map +1 -0
- package/dist/editor-commands/capabilities/prefabs.d.ts +5 -0
- package/dist/editor-commands/capabilities/prefabs.d.ts.map +1 -0
- package/dist/{agent-bridge → editor-commands}/capabilities/prefabs.js +93 -93
- package/dist/editor-commands/capabilities/prefabs.js.map +1 -0
- package/dist/editor-commands/capabilities/scene-objects.d.ts +8 -0
- package/dist/editor-commands/capabilities/scene-objects.d.ts.map +1 -0
- package/dist/editor-commands/capabilities/scene-objects.js +480 -0
- package/dist/editor-commands/capabilities/scene-objects.js.map +1 -0
- package/dist/editor-commands/capabilities/selection.d.ts +5 -0
- package/dist/editor-commands/capabilities/selection.d.ts.map +1 -0
- package/dist/editor-commands/capabilities/selection.js +60 -0
- package/dist/editor-commands/capabilities/selection.js.map +1 -0
- package/dist/editor-commands/capabilities/shadows.d.ts +5 -0
- package/dist/editor-commands/capabilities/shadows.d.ts.map +1 -0
- package/dist/{agent-bridge → editor-commands}/capabilities/shadows.js +74 -74
- package/dist/editor-commands/capabilities/shadows.js.map +1 -0
- package/dist/editor-commands/capabilities/transform.d.ts +5 -0
- package/dist/editor-commands/capabilities/transform.d.ts.map +1 -0
- package/dist/editor-commands/capabilities/transform.js +164 -0
- package/dist/editor-commands/capabilities/transform.js.map +1 -0
- package/dist/editor-commands/capabilities/ui-regions.d.ts +4 -0
- package/dist/editor-commands/capabilities/ui-regions.d.ts.map +1 -0
- package/dist/{agent-bridge → editor-commands}/capabilities/ui-regions.js +55 -57
- package/dist/editor-commands/capabilities/ui-regions.js.map +1 -0
- package/dist/editor-commands/capabilities/viewport.d.ts +5 -0
- package/dist/editor-commands/capabilities/viewport.d.ts.map +1 -0
- package/dist/{agent-bridge → editor-commands}/capabilities/viewport.js +100 -100
- package/dist/editor-commands/capabilities/viewport.js.map +1 -0
- package/dist/editor-commands/command-sources.d.ts +7 -0
- package/dist/editor-commands/command-sources.d.ts.map +1 -0
- package/dist/editor-commands/command-sources.js +34 -0
- package/dist/editor-commands/command-sources.js.map +1 -0
- package/dist/editor-commands/diagnostics.d.ts +12 -0
- package/dist/editor-commands/diagnostics.d.ts.map +1 -0
- package/dist/{agent-bridge → editor-commands}/diagnostics.js +4 -4
- package/dist/editor-commands/diagnostics.js.map +1 -0
- package/dist/{agent-bridge → editor-commands}/index.d.ts +1 -1
- package/dist/editor-commands/index.d.ts.map +1 -0
- package/dist/{agent-bridge → editor-commands}/index.js +1 -1
- package/dist/editor-commands/index.js.map +1 -0
- package/dist/editor-commands/register.d.ts +4 -0
- package/dist/editor-commands/register.d.ts.map +1 -0
- package/dist/{agent-bridge → editor-commands}/register.js +323 -286
- package/dist/editor-commands/register.js.map +1 -0
- package/dist/{agent-bridge → editor-commands}/shared.d.ts +80 -80
- package/dist/editor-commands/shared.d.ts.map +1 -0
- package/dist/{agent-bridge → editor-commands}/shared.js +29 -29
- package/dist/editor-commands/shared.js.map +1 -0
- package/dist/editor-commands/source-types.d.ts +110 -0
- package/dist/editor-commands/source-types.d.ts.map +1 -0
- package/dist/editor-commands/source-types.js.map +1 -0
- package/dist/editor-plugin-commands.d.ts +4 -0
- package/dist/editor-plugin-commands.d.ts.map +1 -0
- package/dist/editor-plugin-commands.js +18 -0
- package/dist/editor-plugin-commands.js.map +1 -0
- package/dist/index.d.ts +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/local-editor-commands.d.ts +2 -0
- package/dist/local-editor-commands.d.ts.map +1 -0
- package/dist/local-editor-commands.js +2 -0
- package/dist/local-editor-commands.js.map +1 -0
- package/dist/local-editor-harness.d.ts +35 -21
- package/dist/local-editor-harness.d.ts.map +1 -1
- package/dist/local-editor-harness.js +1721 -367
- package/dist/local-editor-harness.js.map +1 -1
- package/dist/local-editor-prefab-stage-transaction.d.ts +2 -1
- package/dist/local-editor-prefab-stage-transaction.d.ts.map +1 -1
- package/dist/local-editor-prefab-stage-transaction.js +6 -5
- package/dist/local-editor-prefab-stage-transaction.js.map +1 -1
- package/dist/local-editor-scene-view-interaction-runtime.d.ts.map +1 -1
- package/dist/local-editor-scene-view-interaction-runtime.js +2 -5
- package/dist/local-editor-scene-view-interaction-runtime.js.map +1 -1
- package/dist/playable-local-editor-entry.d.ts +10 -0
- package/dist/playable-local-editor-entry.d.ts.map +1 -1
- package/dist/playable-local-editor-entry.js +10 -2
- package/dist/playable-local-editor-entry.js.map +1 -1
- package/dist/playable-local-editor-host.d.ts +3 -32
- package/dist/playable-local-editor-host.d.ts.map +1 -1
- package/dist/playable-local-editor-host.js +6 -70
- package/dist/playable-local-editor-host.js.map +1 -1
- package/dist/playable-product-local-editor.d.ts +1 -2
- package/dist/playable-product-local-editor.d.ts.map +1 -1
- package/dist/playable-product-local-editor.js +0 -1
- package/dist/playable-product-local-editor.js.map +1 -1
- package/dist/playable-product-projection-preview.d.ts.map +1 -1
- package/dist/playable-product-projection-preview.js +1 -1
- package/dist/playable-product-projection-preview.js.map +1 -1
- package/dist/playable-product-scene-capabilities.d.ts +0 -2
- package/dist/playable-product-scene-capabilities.d.ts.map +1 -1
- package/dist/playable-product-scene-capabilities.js +33 -6
- package/dist/playable-product-scene-capabilities.js.map +1 -1
- package/dist/playable-runtime-babylon.d.ts +4 -0
- package/dist/playable-runtime-babylon.d.ts.map +1 -1
- package/dist/playable-runtime-babylon.js +4 -0
- package/dist/playable-runtime-babylon.js.map +1 -1
- package/dist/playable-sdk.d.ts +1 -1
- package/dist/playable-sdk.d.ts.map +1 -1
- package/dist/playable-sdk.js.map +1 -1
- package/dist/playable-standard-project.d.ts +0 -2
- package/dist/playable-standard-project.d.ts.map +1 -1
- package/dist/playable-standard-project.js +1 -2
- package/dist/playable-standard-project.js.map +1 -1
- package/dist/project-service-projection.d.ts +16 -0
- package/dist/project-service-projection.d.ts.map +1 -0
- package/dist/project-service-projection.js +67 -0
- package/dist/project-service-projection.js.map +1 -0
- package/node_modules/@fps-games/babylon-renderer/dist/post-process/babylon-default-pipeline.d.ts +18 -0
- package/node_modules/@fps-games/babylon-renderer/dist/post-process/babylon-default-pipeline.d.ts.map +1 -1
- package/node_modules/@fps-games/babylon-renderer/dist/post-process/babylon-default-pipeline.js +54 -18
- package/node_modules/@fps-games/babylon-renderer/dist/post-process/babylon-default-pipeline.js.map +1 -1
- package/node_modules/@fps-games/babylon-renderer/package.json +9 -9
- package/node_modules/@fps-games/editor-babylon/dist/projection.d.ts +1 -0
- package/node_modules/@fps-games/editor-babylon/dist/projection.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-babylon/dist/projection.js +1 -1
- package/node_modules/@fps-games/editor-babylon/dist/projection.js.map +1 -1
- package/node_modules/@fps-games/editor-babylon/dist/selection-presentation-controller.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-babylon/dist/selection-presentation-controller.js +127 -13
- package/node_modules/@fps-games/editor-babylon/dist/selection-presentation-controller.js.map +1 -1
- package/node_modules/@fps-games/editor-babylon/dist/transform-gizmo-controller.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-babylon/dist/transform-gizmo-controller.js +66 -1
- package/node_modules/@fps-games/editor-babylon/dist/transform-gizmo-controller.js.map +1 -1
- package/node_modules/@fps-games/editor-babylon/package.json +6 -6
- package/node_modules/@fps-games/editor-browser/dist/editor-command-service-client.d.ts +32 -0
- package/node_modules/@fps-games/editor-browser/dist/editor-command-service-client.d.ts.map +1 -0
- package/node_modules/@fps-games/editor-browser/dist/editor-command-service-client.js +254 -0
- package/node_modules/@fps-games/editor-browser/dist/editor-command-service-client.js.map +1 -0
- package/node_modules/@fps-games/editor-browser/dist/index.d.ts +3 -1
- package/node_modules/@fps-games/editor-browser/dist/index.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-browser/dist/index.js +2 -0
- package/node_modules/@fps-games/editor-browser/dist/index.js.map +1 -1
- package/node_modules/@fps-games/editor-browser/dist/local-editor-command-center.d.ts +68 -0
- package/node_modules/@fps-games/editor-browser/dist/local-editor-command-center.d.ts.map +1 -0
- package/node_modules/@fps-games/editor-browser/dist/local-editor-command-center.js +650 -0
- package/node_modules/@fps-games/editor-browser/dist/local-editor-command-center.js.map +1 -0
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-formal-surface-visibility.d.ts +1 -0
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-formal-surface-visibility.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-formal-surface-visibility.js +22 -0
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-formal-surface-visibility.js.map +1 -1
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-controller.d.ts +8 -0
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-controller.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-controller.js +117 -6
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-controller.js.map +1 -1
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-view.d.ts +14 -1
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-view.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-view.js +100 -1
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-view.js.map +1 -1
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-panels.d.ts +8 -1
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-panels.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-panels.js +75 -2
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-panels.js.map +1 -1
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-types.d.ts +37 -12
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-types.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-types.js.map +1 -1
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui.d.ts +25 -2
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui.js +332 -107
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui.js.map +1 -1
- package/node_modules/@fps-games/editor-browser/package.json +7 -7
- package/node_modules/@fps-games/editor-core/dist/editor-authoring-host.d.ts +107 -0
- package/node_modules/@fps-games/editor-core/dist/editor-authoring-host.d.ts.map +1 -0
- package/node_modules/@fps-games/editor-core/dist/editor-authoring-host.js +1211 -0
- package/node_modules/@fps-games/editor-core/dist/editor-authoring-host.js.map +1 -0
- package/node_modules/@fps-games/editor-core/dist/editor-command-capability-adapter.d.ts +34 -0
- package/node_modules/@fps-games/editor-core/dist/editor-command-capability-adapter.d.ts.map +1 -0
- package/node_modules/@fps-games/editor-core/dist/editor-command-capability-adapter.js +260 -0
- package/node_modules/@fps-games/editor-core/dist/editor-command-capability-adapter.js.map +1 -0
- package/node_modules/@fps-games/editor-core/dist/editor-command-composed-authority.d.ts +9 -0
- package/node_modules/@fps-games/editor-core/dist/editor-command-composed-authority.d.ts.map +1 -0
- package/node_modules/@fps-games/editor-core/dist/editor-command-composed-authority.js +14 -0
- package/node_modules/@fps-games/editor-core/dist/editor-command-composed-authority.js.map +1 -0
- package/node_modules/@fps-games/editor-core/dist/editor-command-observability.d.ts +18 -0
- package/node_modules/@fps-games/editor-core/dist/editor-command-observability.d.ts.map +1 -0
- package/node_modules/@fps-games/editor-core/dist/editor-command-observability.js +113 -0
- package/node_modules/@fps-games/editor-core/dist/editor-command-observability.js.map +1 -0
- package/node_modules/@fps-games/editor-core/dist/editor-command-system.d.ts +82 -0
- package/node_modules/@fps-games/editor-core/dist/editor-command-system.d.ts.map +1 -0
- package/node_modules/@fps-games/editor-core/dist/editor-command-system.js +1098 -0
- package/node_modules/@fps-games/editor-core/dist/editor-command-system.js.map +1 -0
- package/node_modules/@fps-games/editor-core/dist/editor-plugin-host.d.ts +6 -7
- package/node_modules/@fps-games/editor-core/dist/editor-plugin-host.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-core/dist/editor-plugin-host.js +62 -103
- package/node_modules/@fps-games/editor-core/dist/editor-plugin-host.js.map +1 -1
- package/node_modules/@fps-games/editor-core/dist/editor-service-gateway.d.ts +30 -0
- package/node_modules/@fps-games/editor-core/dist/editor-service-gateway.d.ts.map +1 -0
- package/node_modules/@fps-games/editor-core/dist/editor-service-gateway.js +540 -0
- package/node_modules/@fps-games/editor-core/dist/editor-service-gateway.js.map +1 -0
- package/node_modules/@fps-games/editor-core/dist/editor-session-authority.d.ts +9 -0
- package/node_modules/@fps-games/editor-core/dist/editor-session-authority.d.ts.map +1 -0
- package/node_modules/@fps-games/editor-core/dist/editor-session-authority.js +61 -0
- package/node_modules/@fps-games/editor-core/dist/editor-session-authority.js.map +1 -0
- package/node_modules/@fps-games/editor-core/dist/editor-session.d.ts +55 -0
- package/node_modules/@fps-games/editor-core/dist/editor-session.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-core/dist/editor-session.js +247 -6
- package/node_modules/@fps-games/editor-core/dist/editor-session.js.map +1 -1
- package/node_modules/@fps-games/editor-core/dist/index.d.ts +6 -2
- package/node_modules/@fps-games/editor-core/dist/index.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-core/dist/index.js +6 -2
- package/node_modules/@fps-games/editor-core/dist/index.js.map +1 -1
- package/node_modules/@fps-games/editor-core/package.json +6 -6
- package/node_modules/@fps-games/editor-forge-play/dist/index.d.ts +0 -1
- package/node_modules/@fps-games/editor-forge-play/dist/index.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-forge-play/dist/index.js +0 -1
- package/node_modules/@fps-games/editor-forge-play/dist/index.js.map +1 -1
- package/node_modules/@fps-games/editor-forge-play/package.json +2 -2
- package/node_modules/@fps-games/editor-playable-sdk/dist/bridge-command/protocol.d.ts +2 -0
- package/node_modules/@fps-games/editor-playable-sdk/dist/bridge-command/protocol.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/document/helpers.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/document/helpers.js +41 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/document/helpers.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/forge-play-types.d.ts +27 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/forge-play-types.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/forge-play-types.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/forge-play.d.ts +2 -0
- package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/forge-play.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/forge-play.js +214 -7
- package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/forge-play.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/host-controller.d.ts +1 -0
- package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/host-controller.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/host-controller.js +11 -3
- package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/host-controller.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/index.d.ts +2 -4
- package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/index.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/index.js +0 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/index.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/lifecycle.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/lifecycle.js +77 -31
- package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/lifecycle.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/types.d.ts +8 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/types.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/types.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/material-binding/asset-fields.d.ts +21 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/material-binding/asset-fields.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/material-binding/asset-fields.js +90 -4
- package/node_modules/@fps-games/editor-playable-sdk/dist/material-binding/asset-fields.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/material-binding/binding.d.ts +27 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/material-binding/binding.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/material-binding/binding.js +161 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/material-binding/binding.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/material-binding/inspector.d.ts +2 -2
- package/node_modules/@fps-games/editor-playable-sdk/dist/material-binding/inspector.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/material-binding/inspector.js +5 -92
- package/node_modules/@fps-games/editor-playable-sdk/dist/material-binding/inspector.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/material-binding/scene-inspector.d.ts +7 -0
- package/node_modules/@fps-games/editor-playable-sdk/dist/material-binding/scene-inspector.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/material-binding/scene-inspector.js +26 -9
- package/node_modules/@fps-games/editor-playable-sdk/dist/material-binding/scene-inspector.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/material-binding/slot-inspector.d.ts +9 -0
- package/node_modules/@fps-games/editor-playable-sdk/dist/material-binding/slot-inspector.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/material-binding/slot-inspector.js +19 -8
- package/node_modules/@fps-games/editor-playable-sdk/dist/material-binding/slot-inspector.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/prefab-stage/material-override-inspector.d.ts +5 -0
- package/node_modules/@fps-games/editor-playable-sdk/dist/prefab-stage/material-override-inspector.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/prefab-stage/material-override-inspector.js +16 -4
- package/node_modules/@fps-games/editor-playable-sdk/dist/prefab-stage/material-override-inspector.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/prefab-stage/stage-inspector.d.ts +9 -0
- package/node_modules/@fps-games/editor-playable-sdk/dist/prefab-stage/stage-inspector.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/prefab-stage/stage-inspector.js +12 -2
- package/node_modules/@fps-games/editor-playable-sdk/dist/prefab-stage/stage-inspector.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/product/ground-decal.d.ts +2 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/product/ground-decal.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/product/ground-decal.js +10 -5
- package/node_modules/@fps-games/editor-playable-sdk/dist/product/ground-decal.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/product/index.d.ts +1 -0
- package/node_modules/@fps-games/editor-playable-sdk/dist/product/index.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/product/index.js +1 -0
- package/node_modules/@fps-games/editor-playable-sdk/dist/product/index.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/product/project-host-services.d.ts +17 -82
- package/node_modules/@fps-games/editor-playable-sdk/dist/product/project-host-services.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/product/project-host-services.js +53 -57
- package/node_modules/@fps-games/editor-playable-sdk/dist/product/project-host-services.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/product/scene-session.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/product/scene-session.js +3 -2
- package/node_modules/@fps-games/editor-playable-sdk/dist/product/scene-session.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/product/standard-authoring-commands.d.ts +10 -0
- package/node_modules/@fps-games/editor-playable-sdk/dist/product/standard-authoring-commands.d.ts.map +1 -0
- package/node_modules/@fps-games/editor-playable-sdk/dist/product/standard-authoring-commands.js +256 -0
- package/node_modules/@fps-games/editor-playable-sdk/dist/product/standard-authoring-commands.js.map +1 -0
- package/node_modules/@fps-games/editor-playable-sdk/dist/product/standard-scene-assembly.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/product/standard-scene-assembly.js +7 -5
- package/node_modules/@fps-games/editor-playable-sdk/dist/product/standard-scene-assembly.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/scene-source/client.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/scene-source/client.js +8 -0
- package/node_modules/@fps-games/editor-playable-sdk/dist/scene-source/client.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/scene-source/types.d.ts +1 -0
- package/node_modules/@fps-games/editor-playable-sdk/dist/scene-source/types.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/scene-source/types.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/upgrade-doctor/inspectors.js +134 -12
- package/node_modules/@fps-games/editor-playable-sdk/dist/upgrade-doctor/inspectors.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/vite/editor-scene-workflow.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/vite/editor-scene-workflow.js +47 -0
- package/node_modules/@fps-games/editor-playable-sdk/dist/vite/editor-scene-workflow.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/vite/editor-service-vite.d.ts +27 -0
- package/node_modules/@fps-games/editor-playable-sdk/dist/vite/editor-service-vite.d.ts.map +1 -0
- package/node_modules/@fps-games/editor-playable-sdk/dist/vite/editor-service-vite.js +592 -0
- package/node_modules/@fps-games/editor-playable-sdk/dist/vite/editor-service-vite.js.map +1 -0
- package/node_modules/@fps-games/editor-playable-sdk/dist/vite/index.d.ts +3 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/vite/index.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/vite/index.js +2 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/vite/index.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/vite/plugin.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/vite/plugin.js +61 -6
- package/node_modules/@fps-games/editor-playable-sdk/dist/vite/plugin.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/vite/product-adapter.d.ts +0 -2
- package/node_modules/@fps-games/editor-playable-sdk/dist/vite/product-adapter.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/vite/product-adapter.js +1 -10
- package/node_modules/@fps-games/editor-playable-sdk/dist/vite/product-adapter.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/vite/product-authoring-api.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/vite/product-authoring-api.js +21 -0
- package/node_modules/@fps-games/editor-playable-sdk/dist/vite/product-authoring-api.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/vite/project-authoring-backend.d.ts +13 -0
- package/node_modules/@fps-games/editor-playable-sdk/dist/vite/project-authoring-backend.d.ts.map +1 -0
- package/node_modules/@fps-games/editor-playable-sdk/dist/vite/project-authoring-backend.js +18 -0
- package/node_modules/@fps-games/editor-playable-sdk/dist/vite/project-authoring-backend.js.map +1 -0
- package/node_modules/@fps-games/editor-playable-sdk/dist/vite/project-editor-service.d.ts +28 -0
- package/node_modules/@fps-games/editor-playable-sdk/dist/vite/project-editor-service.d.ts.map +1 -0
- package/node_modules/@fps-games/editor-playable-sdk/dist/vite/project-editor-service.js +863 -0
- package/node_modules/@fps-games/editor-playable-sdk/dist/vite/project-editor-service.js.map +1 -0
- package/node_modules/@fps-games/editor-playable-sdk/dist/vite/types.d.ts +2 -0
- package/node_modules/@fps-games/editor-playable-sdk/dist/vite/types.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/vite/types.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/package.json +6 -6
- package/node_modules/@fps-games/editor-protocol/dist/editor-command-capabilities.d.ts +1626 -0
- package/node_modules/@fps-games/editor-protocol/dist/editor-command-capabilities.d.ts.map +1 -0
- package/node_modules/@fps-games/editor-protocol/dist/{agent-bridge.js → editor-command-capabilities.js} +766 -620
- package/node_modules/@fps-games/editor-protocol/dist/editor-command-capabilities.js.map +1 -0
- package/node_modules/@fps-games/editor-protocol/dist/editor-command-trace.d.ts +69 -0
- package/node_modules/@fps-games/editor-protocol/dist/editor-command-trace.d.ts.map +1 -0
- package/node_modules/@fps-games/editor-protocol/dist/editor-command-trace.js +22 -0
- package/node_modules/@fps-games/editor-protocol/dist/editor-command-trace.js.map +1 -0
- package/node_modules/@fps-games/editor-protocol/dist/editor-command.d.ts +136 -0
- package/node_modules/@fps-games/editor-protocol/dist/editor-command.d.ts.map +1 -0
- package/node_modules/@fps-games/editor-protocol/dist/editor-command.js +2 -0
- package/node_modules/@fps-games/editor-protocol/dist/editor-command.js.map +1 -0
- package/node_modules/@fps-games/editor-protocol/dist/editor-service.d.ts +225 -0
- package/node_modules/@fps-games/editor-protocol/dist/editor-service.d.ts.map +1 -0
- package/node_modules/@fps-games/editor-protocol/dist/editor-service.js +4 -0
- package/node_modules/@fps-games/editor-protocol/dist/editor-service.js.map +1 -0
- package/node_modules/@fps-games/editor-protocol/dist/index.d.ts +6 -3
- package/node_modules/@fps-games/editor-protocol/dist/index.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-protocol/dist/index.js +6 -3
- package/node_modules/@fps-games/editor-protocol/dist/index.js.map +1 -1
- package/node_modules/@fps-games/editor-protocol/package.json +2 -2
- package/node_modules/@fps-games/editor-tooling/package.json +3 -3
- package/node_modules/@fps-games/editor-ui/package.json +1 -1
- package/node_modules/@fps-games/playable-assets/package.json +1 -1
- package/node_modules/@fps-games/playable-contracts/package.json +1 -1
- package/node_modules/@fps-games/playable-rendering/package.json +2 -2
- package/node_modules/@fps-games/playable-runtime/package.json +12 -12
- package/node_modules/@fps-games/playable-runtime-data/package.json +4 -4
- package/node_modules/@fps-games/playable-scene/package.json +2 -2
- package/node_modules/@fps-games/plugin-api/package.json +1 -1
- package/node_modules/@fps-games/plugin-assets/dist/version.d.ts +1 -1
- package/node_modules/@fps-games/plugin-assets/dist/version.js +1 -1
- package/node_modules/@fps-games/plugin-assets/dist/version.js.map +1 -1
- package/node_modules/@fps-games/plugin-assets/package.json +6 -6
- package/node_modules/@fps-games/plugin-hierarchy/dist/kernel.d.ts +1 -0
- package/node_modules/@fps-games/plugin-hierarchy/dist/kernel.d.ts.map +1 -1
- package/node_modules/@fps-games/plugin-hierarchy/dist/kernel.js +78 -4
- package/node_modules/@fps-games/plugin-hierarchy/dist/kernel.js.map +1 -1
- package/node_modules/@fps-games/plugin-hierarchy/dist/version.d.ts +1 -1
- package/node_modules/@fps-games/plugin-hierarchy/dist/version.js +1 -1
- package/node_modules/@fps-games/plugin-hierarchy/dist/version.js.map +1 -1
- package/node_modules/@fps-games/plugin-hierarchy/package.json +5 -5
- package/node_modules/@fps-games/plugin-host/package.json +2 -2
- package/node_modules/@fps-games/plugin-markers/dist/version.d.ts +1 -1
- package/node_modules/@fps-games/plugin-markers/dist/version.js +1 -1
- package/node_modules/@fps-games/plugin-markers/dist/version.js.map +1 -1
- package/node_modules/@fps-games/plugin-markers/package.json +5 -5
- package/node_modules/@fps-games/plugin-materials/dist/version.d.ts +1 -1
- package/node_modules/@fps-games/plugin-materials/dist/version.js +1 -1
- package/node_modules/@fps-games/plugin-materials/dist/version.js.map +1 -1
- package/node_modules/@fps-games/plugin-materials/package.json +5 -5
- package/node_modules/@fps-games/plugin-rendering/dist/version.d.ts +1 -1
- package/node_modules/@fps-games/plugin-rendering/dist/version.js +1 -1
- package/node_modules/@fps-games/plugin-rendering/dist/version.js.map +1 -1
- package/node_modules/@fps-games/plugin-rendering/package.json +5 -5
- package/node_modules/@fps-games/plugin-scene/dist/version.d.ts +1 -1
- package/node_modules/@fps-games/plugin-scene/dist/version.js +1 -1
- package/node_modules/@fps-games/plugin-scene/dist/version.js.map +1 -1
- package/node_modules/@fps-games/plugin-scene/package.json +5 -5
- package/node_modules/@fps-games/plugin-shadow-map-experiment/dist/version.d.ts +1 -1
- package/node_modules/@fps-games/plugin-shadow-map-experiment/dist/version.js +1 -1
- package/node_modules/@fps-games/plugin-shadow-map-experiment/dist/version.js.map +1 -1
- package/node_modules/@fps-games/plugin-shadow-map-experiment/package.json +5 -5
- package/node_modules/@fps-games/plugin-shadows/dist/version.d.ts +1 -1
- package/node_modules/@fps-games/plugin-shadows/dist/version.js +1 -1
- package/node_modules/@fps-games/plugin-shadows/dist/version.js.map +1 -1
- package/node_modules/@fps-games/plugin-shadows/package.json +7 -7
- package/package.json +23 -23
- package/dist/agent-bridge/capabilities/assets.d.ts +0 -8
- package/dist/agent-bridge/capabilities/assets.d.ts.map +0 -1
- package/dist/agent-bridge/capabilities/assets.js.map +0 -1
- package/dist/agent-bridge/capabilities/editor-state.d.ts +0 -5
- package/dist/agent-bridge/capabilities/editor-state.d.ts.map +0 -1
- package/dist/agent-bridge/capabilities/editor-state.js.map +0 -1
- package/dist/agent-bridge/capabilities/hierarchy.d.ts +0 -4
- package/dist/agent-bridge/capabilities/hierarchy.d.ts.map +0 -1
- package/dist/agent-bridge/capabilities/hierarchy.js.map +0 -1
- package/dist/agent-bridge/capabilities/host-lifecycle.d.ts +0 -11
- package/dist/agent-bridge/capabilities/host-lifecycle.d.ts.map +0 -1
- package/dist/agent-bridge/capabilities/host-lifecycle.js +0 -149
- package/dist/agent-bridge/capabilities/host-lifecycle.js.map +0 -1
- package/dist/agent-bridge/capabilities/prefabs.d.ts +0 -5
- package/dist/agent-bridge/capabilities/prefabs.d.ts.map +0 -1
- package/dist/agent-bridge/capabilities/prefabs.js.map +0 -1
- package/dist/agent-bridge/capabilities/scene-objects.d.ts +0 -8
- package/dist/agent-bridge/capabilities/scene-objects.d.ts.map +0 -1
- package/dist/agent-bridge/capabilities/scene-objects.js +0 -480
- package/dist/agent-bridge/capabilities/scene-objects.js.map +0 -1
- package/dist/agent-bridge/capabilities/selection.d.ts +0 -5
- package/dist/agent-bridge/capabilities/selection.d.ts.map +0 -1
- package/dist/agent-bridge/capabilities/selection.js +0 -60
- package/dist/agent-bridge/capabilities/selection.js.map +0 -1
- package/dist/agent-bridge/capabilities/shadows.d.ts +0 -5
- package/dist/agent-bridge/capabilities/shadows.d.ts.map +0 -1
- package/dist/agent-bridge/capabilities/shadows.js.map +0 -1
- package/dist/agent-bridge/capabilities/transform.d.ts +0 -5
- package/dist/agent-bridge/capabilities/transform.d.ts.map +0 -1
- package/dist/agent-bridge/capabilities/transform.js +0 -164
- package/dist/agent-bridge/capabilities/transform.js.map +0 -1
- package/dist/agent-bridge/capabilities/ui-regions.d.ts +0 -4
- package/dist/agent-bridge/capabilities/ui-regions.d.ts.map +0 -1
- package/dist/agent-bridge/capabilities/ui-regions.js.map +0 -1
- package/dist/agent-bridge/capabilities/viewport.d.ts +0 -5
- package/dist/agent-bridge/capabilities/viewport.d.ts.map +0 -1
- package/dist/agent-bridge/capabilities/viewport.js.map +0 -1
- package/dist/agent-bridge/capability-sources.d.ts +0 -7
- package/dist/agent-bridge/capability-sources.d.ts.map +0 -1
- package/dist/agent-bridge/capability-sources.js +0 -34
- package/dist/agent-bridge/capability-sources.js.map +0 -1
- package/dist/agent-bridge/diagnostics.d.ts +0 -12
- package/dist/agent-bridge/diagnostics.d.ts.map +0 -1
- package/dist/agent-bridge/diagnostics.js.map +0 -1
- package/dist/agent-bridge/index.d.ts.map +0 -1
- package/dist/agent-bridge/index.js.map +0 -1
- package/dist/agent-bridge/register.d.ts +0 -4
- package/dist/agent-bridge/register.d.ts.map +0 -1
- package/dist/agent-bridge/register.js.map +0 -1
- package/dist/agent-bridge/shared.d.ts.map +0 -1
- package/dist/agent-bridge/shared.js.map +0 -1
- package/dist/agent-bridge/source-types.d.ts +0 -110
- package/dist/agent-bridge/source-types.d.ts.map +0 -1
- package/dist/agent-bridge/source-types.js.map +0 -1
- package/dist/editor-plugin-agent-capabilities.d.ts +0 -4
- package/dist/editor-plugin-agent-capabilities.d.ts.map +0 -1
- package/dist/editor-plugin-agent-capabilities.js +0 -64
- package/dist/editor-plugin-agent-capabilities.js.map +0 -1
- package/dist/local-editor-agent-actions.d.ts +0 -43
- package/dist/local-editor-agent-actions.d.ts.map +0 -1
- package/dist/local-editor-agent-actions.js +0 -321
- package/dist/local-editor-agent-actions.js.map +0 -1
- package/dist/local-editor-agent-bridge-transport.d.ts +0 -129
- package/dist/local-editor-agent-bridge-transport.d.ts.map +0 -1
- package/dist/local-editor-agent-bridge-transport.js +0 -403
- package/dist/local-editor-agent-bridge-transport.js.map +0 -1
- package/dist/local-editor-agent-bridge.d.ts +0 -2
- package/dist/local-editor-agent-bridge.d.ts.map +0 -1
- package/dist/local-editor-agent-bridge.js +0 -2
- package/dist/local-editor-agent-bridge.js.map +0 -1
- package/dist/local-editor-agent-context.d.ts +0 -68
- package/dist/local-editor-agent-context.d.ts.map +0 -1
- package/dist/local-editor-agent-context.js +0 -716
- package/dist/local-editor-agent-context.js.map +0 -1
- package/node_modules/@fps-games/editor-core/dist/agent-bridge.d.ts +0 -22
- package/node_modules/@fps-games/editor-core/dist/agent-bridge.d.ts.map +0 -1
- package/node_modules/@fps-games/editor-core/dist/agent-bridge.js +0 -106
- package/node_modules/@fps-games/editor-core/dist/agent-bridge.js.map +0 -1
- package/node_modules/@fps-games/editor-core/dist/agent-interaction.d.ts +0 -17
- package/node_modules/@fps-games/editor-core/dist/agent-interaction.d.ts.map +0 -1
- package/node_modules/@fps-games/editor-core/dist/agent-interaction.js +0 -14
- package/node_modules/@fps-games/editor-core/dist/agent-interaction.js.map +0 -1
- package/node_modules/@fps-games/editor-forge-play/dist/agent-transport.d.ts +0 -23
- package/node_modules/@fps-games/editor-forge-play/dist/agent-transport.d.ts.map +0 -1
- package/node_modules/@fps-games/editor-forge-play/dist/agent-transport.js +0 -47
- package/node_modules/@fps-games/editor-forge-play/dist/agent-transport.js.map +0 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/agent-descriptions.d.ts +0 -112
- package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/agent-descriptions.d.ts.map +0 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/agent-descriptions.js +0 -159
- package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/agent-descriptions.js.map +0 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/vite/session-metadata.d.ts +0 -15
- package/node_modules/@fps-games/editor-playable-sdk/dist/vite/session-metadata.d.ts.map +0 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/vite/session-metadata.js +0 -76
- package/node_modules/@fps-games/editor-playable-sdk/dist/vite/session-metadata.js.map +0 -1
- package/node_modules/@fps-games/editor-protocol/dist/agent-bridge.d.ts +0 -1622
- package/node_modules/@fps-games/editor-protocol/dist/agent-bridge.d.ts.map +0 -1
- package/node_modules/@fps-games/editor-protocol/dist/agent-bridge.js.map +0 -1
- package/node_modules/@fps-games/editor-protocol/dist/agent-trace.d.ts +0 -68
- package/node_modules/@fps-games/editor-protocol/dist/agent-trace.d.ts.map +0 -1
- package/node_modules/@fps-games/editor-protocol/dist/agent-trace.js +0 -23
- package/node_modules/@fps-games/editor-protocol/dist/agent-trace.js.map +0 -1
- package/node_modules/@fps-games/editor-protocol/dist/agent.d.ts +0 -187
- package/node_modules/@fps-games/editor-protocol/dist/agent.d.ts.map +0 -1
- package/node_modules/@fps-games/editor-protocol/dist/agent.js +0 -5
- package/node_modules/@fps-games/editor-protocol/dist/agent.js.map +0 -1
- /package/dist/{agent-bridge → editor-commands}/source-types.js +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shadows.js","sourceRoot":"","sources":["../../../src/editor-commands/capabilities/shadows.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n collectEditorShadowReceiverCandidates,\n detectEditorSceneDirectionalLightOrientationDrift,\n findEditorSceneModelRenderer,\n findEditorScenePrefabAsset,\n findEditorScenePrefabNode,\n findEditorSceneTransform,\n normalizeEditorSceneLightDirectionVector,\n readEditorScenePrefabNodes,\n readEditorScenePrefabRootNodeId,\n resolveEditorSceneGameObjectShadowSettings,\n resolveEditorSceneGameObjectRuntimeEntityIds,\n resolveEditorScenePrefabInstanceRelation,\n resolveEditorShadowPlan,\n type EditorShadowResolvePlanInput,\n type EditorSceneDocument,\n type EditorSceneGameObject,\n} from '@fps-games/editor-playable-sdk';\nimport {\n assertEditorShadowSettingsContract,\n assertShadowMapExperimentConfig,\n createShadowMapExperimentPlanSnapshot,\n createShadowMapExperimentPlanFingerprint,\n mergeEditorShadowSettings,\n readEditorShadowSettings,\n resolveEditorShadowParams,\n type EditorShadowDiagnostic,\n type EditorShadowReceiverCandidate,\n type EditorShadowResolvedPlan,\n type EditorShadowSettings,\n type ShadowMapExperimentConfig,\n type ShadowMapExperimentPlan,\n} from '@fps-games/playable-rendering';\nimport {\n EDITOR_COMMAND_ID,\n type EditorCommandBounds,\n type EditorCommandDiagnostic,\n type EditorCommandJsonObject,\n type EditorCommandShadowPolicyGetInput,\n type EditorCommandShadowPolicyGetOutput,\n type EditorCommandShadowPolicySetInput,\n type EditorCommandShadowPolicySetOutput,\n type EditorCommandShadowMapExperimentConfigGetOutput,\n type EditorCommandShadowMapExperimentPolicyGetInput,\n type EditorCommandShadowMapExperimentPolicyOutput,\n type EditorCommandShadowMapExperimentPolicySetInput,\n type EditorCommandShadowMapExperimentPolicySetOutput,\n type EditorCommandShadowMapExperimentRuntimeSnapshotOutput,\n type EditorCommandShadowMapExperimentTarget,\n type EditorCommandShadowDebugContextClearOutput,\n type EditorCommandShadowDebugContextEnterInput,\n type EditorCommandShadowDebugContextEnterOutput,\n type EditorCommandShadowDebugInspectOutput,\n type EditorCommandShadowDebugOverlayClearOutput,\n type EditorCommandShadowDebugOverlaySetInput,\n type EditorCommandShadowDebugOverlaySetOutput,\n type EditorCommandShadowDebugVisibilityMeasureInput,\n type EditorCommandShadowDebugVisibilityMeasureOutput,\n type EditorCommandShadowRuntimeEvidence,\n type EditorCommandShadowReceiverCandidate,\n type EditorCommandShadowDebugTargetSummary,\n type EditorCommandShadowFootprintSummary,\n type EditorCommandShadowLightSummary,\n type EditorCommandShadowReceiversListInput,\n type EditorCommandShadowReceiversListOutput,\n type EditorCommandShadowResolvedPlan,\n type EditorCommandShadowResolvePreviewInput,\n type EditorCommandShadowResolvePreviewOutput,\n type EditorCommandShadowSettings,\n type EditorCommandShadowStaticBakeInput,\n type EditorCommandShadowStaticBakeOutput,\n type EditorCommandShadowStaticInvalidateInput,\n type EditorCommandShadowStaticInvalidateOutput,\n type EditorCommandShadowTarget,\n type EditorCommandVec3,\n} from '@fps-games/editor-protocol';\nimport {\n createLocalEditorCommandFailure,\n editorTransformSnapshotToAgentTransform,\n} from '../diagnostics.js';\nimport type { LocalEditorCommandShadowSource } from '../source-types.js';\nimport {\n createEditorCommandSafePrefabReadModel,\n getEditorCommandSafeSceneSelection,\n hasEditorCommandSafeSceneScope,\n isEditorCommandSafeSceneObjectId,\n normalizeEditorCommandIdList,\n normalizeEditorCommandString,\n type LocalEditorCommandCapabilitySourceOperations,\n type LocalEditorCommandHarnessState,\n type LocalEditorCommandPrefabStageDetails,\n type LocalEditorCommandSafePrefabReadModel,\n type LocalEditorCommandShadowPreviewDebugInfo,\n type LocalEditorCommandShadowDebugOverlayItem,\n} from '../shared.js';\nimport type { LocalEditorHarnessOptions } from '../../local-editor-harness.js';\n\nconst SHADOW_POLICY_FIELDS = [\n 'shadow.cast',\n 'shadow.receive',\n 'shadow.mode',\n 'shadow.quality',\n 'shadow.light.mode',\n 'shadow.light.lightId',\n 'shadow.params.opacity',\n 'shadow.params.softness',\n 'shadow.params.bias',\n 'shadow.params.normalBias',\n 'shadow.params.maxDistance',\n 'shadow.params.resolution',\n 'shadow.params.cascadeCount',\n 'shadow.params.bakeSamples',\n 'shadow.params.blurKernel',\n] as const;\n\ntype ShadowPolicyFieldPath = typeof SHADOW_POLICY_FIELDS[number];\n\ninterface PrefabShadowNode {\n id: string;\n label: string;\n kind: string;\n parentId: string | null;\n defaults?: Record<string, unknown>;\n primitive?: Record<string, unknown>;\n light?: Record<string, unknown>;\n}\n\ntype ResolvedShadowTarget<TDocument> =\n | {\n kind: 'scene';\n target: EditorCommandShadowTarget;\n document: EditorSceneDocument;\n rawDocument: TDocument;\n objectId: string;\n gameObject: EditorSceneGameObject;\n }\n | {\n kind: 'prefab-stage';\n target: EditorCommandShadowTarget;\n details: LocalEditorCommandPrefabStageDetails<TDocument>;\n nodeId: string;\n rootNodeId: string;\n node: PrefabShadowNode;\n document: EditorSceneDocument;\n };\n\ntype ResolvedShadowMapExperimentTarget<TDocument> =\n | {\n kind: 'scene';\n target: EditorCommandShadowMapExperimentTarget;\n document: EditorSceneDocument;\n rawDocument: TDocument;\n }\n | {\n kind: 'object';\n target: EditorCommandShadowMapExperimentTarget;\n document: EditorSceneDocument;\n rawDocument: TDocument;\n objectId: string;\n gameObject: EditorSceneGameObject;\n }\n | {\n kind: 'prefab-node';\n target: EditorCommandShadowMapExperimentTarget;\n document: EditorSceneDocument;\n rawDocument: TDocument;\n prefabAssetId: string;\n nodeId: string;\n rootNodeId: string;\n prefabAsset: NonNullable<ReturnType<typeof findEditorScenePrefabAsset>>;\n node: NonNullable<ReturnType<typeof findEditorScenePrefabNode>>;\n };\n\ntype StrictEditorShadowResolvePlanInput = EditorShadowResolvePlanInput & {\n strictExplicitReceivers?: boolean;\n};\n\ntype EditorCommandResolvedBounds = Required<Pick<EditorCommandBounds, 'min' | 'max' | 'size' | 'center'>>;\n\ninterface ShadowProjectionContext {\n resolveProjectionId(targetId: string): string;\n}\n\nexport function createLocalEditorCommandShadowSource<TDocument, TPatch, TAsset>(\n state: LocalEditorCommandHarnessState<TDocument, TPatch>,\n options: LocalEditorHarnessOptions<TDocument, TPatch, TAsset>,\n renderUi: () => void,\n operations: LocalEditorCommandCapabilitySourceOperations<TDocument>,\n): LocalEditorCommandShadowSource {\n return {\n getShadowMapExperimentConfig() {\n const config = readShadowMapExperimentConfig(\n options,\n EDITOR_COMMAND_ID.SHADOW_MAP_EXPERIMENT_CONFIG_GET,\n );\n if (!config.ok) return config.result;\n return createShadowMapExperimentConfigOutput(config.config);\n },\n getShadowMapExperimentPolicy(input) {\n const config = readShadowMapExperimentConfig(\n options,\n EDITOR_COMMAND_ID.SHADOW_MAP_EXPERIMENT_POLICY_GET,\n );\n if (!config.ok) return config.result;\n const resolved = resolveShadowMapExperimentTarget(\n EDITOR_COMMAND_ID.SHADOW_MAP_EXPERIMENT_POLICY_GET,\n state,\n input,\n operations,\n );\n if (!resolved.ok) return resolved.result;\n return createShadowMapExperimentPolicyOutput(\n resolved.target,\n config.config,\n readShadowMapExperimentPlan(options, resolved.target.rawDocument),\n );\n },\n setShadowMapExperimentPolicy(input) {\n const config = readShadowMapExperimentConfig(\n options,\n EDITOR_COMMAND_ID.SHADOW_MAP_EXPERIMENT_POLICY_SET,\n );\n if (!config.ok) return config.result;\n if (!config.config) {\n return createLocalEditorCommandFailure(\n EDITOR_COMMAND_ID.SHADOW_MAP_EXPERIMENT_POLICY_SET,\n 'Shadow Map experiment config is not available.',\n { code: 'shadowMapExperiment.configMissing' },\n );\n }\n const validation = validateShadowMapExperimentPolicySetInput(input, config.config);\n if (!validation.ok) {\n return createLocalEditorCommandFailure(\n EDITOR_COMMAND_ID.SHADOW_MAP_EXPERIMENT_POLICY_SET,\n validation.message,\n { code: 'shadowMapExperiment.invalidInput', details: { scope: input.scope } },\n );\n }\n const resolved = resolveShadowMapExperimentTarget(\n EDITOR_COMMAND_ID.SHADOW_MAP_EXPERIMENT_POLICY_SET,\n state,\n input,\n operations,\n );\n if (!resolved.ok) return resolved.result;\n return setShadowMapExperimentPolicy(\n state,\n options,\n renderUi,\n operations,\n resolved.target,\n input,\n config.config,\n );\n },\n previewShadowMapExperimentPlan() {\n const rawDocument = state.session?.getState({ cloneDocuments: false }).workingDocument;\n if (state.mode !== 'editor' || !rawDocument) {\n return createLocalEditorCommandFailure(\n EDITOR_COMMAND_ID.SHADOW_MAP_EXPERIMENT_PLAN_PREVIEW,\n 'Editor is not in edit mode.',\n { code: 'editor.notReady' },\n );\n }\n const plan = readShadowMapExperimentPlan(options, rawDocument);\n return { plan: plan ? structuredClone(plan) as unknown as Record<string, unknown> : null };\n },\n snapshotShadowMapExperimentRuntime() {\n const rawDocument = state.session?.getState({ cloneDocuments: false }).workingDocument;\n if (state.mode !== 'editor' || !rawDocument) {\n return createLocalEditorCommandFailure(\n EDITOR_COMMAND_ID.SHADOW_MAP_EXPERIMENT_RUNTIME_SNAPSHOT,\n 'Editor is not in edit mode.',\n { code: 'editor.notReady' },\n );\n }\n const evidence = operations.getShadowPreviewDebugInfo?.()?.shadowMapExperiment ?? null;\n const sourcePlan = readShadowMapExperimentPlan(options, rawDocument);\n const plan = resolveEvidenceVerifiedShadowMapExperimentPlan(\n readShadowMapExperimentExecutionPlan(operations),\n sourcePlan,\n evidence,\n );\n if (!plan && !evidence) return { snapshot: null };\n return {\n snapshot: structuredClone({\n planSchemaVersion: plan?.schemaVersion ?? evidence?.runtime.planSchemaVersion ?? null,\n planRevision: plan?.revision ?? null,\n runtime: evidence?.runtime ?? null,\n activity: evidence?.activity ?? null,\n registry: evidence?.registry ?? null,\n depth: evidence?.depth ?? null,\n receiverMeshCount: evidence?.receiverMeshCount ?? 0,\n renderListCount: evidence?.renderListCount ?? 0,\n backend: evidence?.backend ?? null,\n diagnostics: evidence?.diagnostics ?? [],\n }) as unknown as EditorCommandShadowMapExperimentRuntimeSnapshotOutput['snapshot'],\n };\n },\n getPolicy(input) {\n const resolved = resolveShadowTarget(\n EDITOR_COMMAND_ID.SHADOW_POLICY_GET,\n state,\n input,\n operations,\n );\n if (!resolved.ok) return resolved.result;\n return createShadowPolicyGetOutput(\n resolved.target,\n resolveCanonicalShadowMapExperimentPlan(options, resolved.target, operations),\n );\n },\n setPolicy(input) {\n const policy = normalizeShadowPolicy(input.policy);\n if (!policy.ok) {\n return createLocalEditorCommandFailure(\n EDITOR_COMMAND_ID.SHADOW_POLICY_SET,\n policy.message,\n { code: 'shadow.invalidInput', details: { hasPolicy: input.policy != null } },\n );\n }\n const resolved = resolveShadowTarget(\n EDITOR_COMMAND_ID.SHADOW_POLICY_SET,\n state,\n input,\n operations,\n );\n if (!resolved.ok) return resolved.result;\n if (resolved.target.kind === 'scene') {\n return setSceneShadowPolicy(state, options, renderUi, operations, resolved.target, policy.settings);\n }\n return setPrefabStageShadowPolicy(renderUi, operations, resolved.target, policy.settings);\n },\n listReceivers(input) {\n const resolved = resolveShadowTarget(\n EDITOR_COMMAND_ID.SHADOW_RECEIVERS_LIST,\n state,\n input,\n operations,\n );\n if (!resolved.ok) return resolved.result;\n const casterId = getResolvedTargetCasterId(resolved.target);\n const projectionContext = createShadowProjectionContext(resolved.target, operations);\n const canonicalPlan = resolveCanonicalShadowMapExperimentPlan(options, resolved.target, operations);\n const receiverIds = canonicalPlan?.receiverIds ?? [];\n return {\n receivers: mapShadowReceivers(\n collectEditorShadowReceiverCandidates({\n document: resolved.target.document,\n casterId,\n ...(receiverIds.length > 0 ? { explicitReceiverIds: receiverIds } : {}),\n }),\n state,\n { casterId, projectionContext },\n ).filter(receiver => (\n canonicalPlan\n ? receiverIds.includes(receiver.receiverId)\n : input.includeAuto === true || receiver.source !== 'auto'\n )),\n diagnostics: createShadowTargetDiagnostics(resolved.target),\n } satisfies EditorCommandShadowReceiversListOutput;\n },\n resolvePreview(input) {\n const policy = input.policy === undefined ? { ok: true as const, settings: undefined } : normalizeShadowPolicy(input.policy);\n if (!policy.ok) {\n return createLocalEditorCommandFailure(\n EDITOR_COMMAND_ID.SHADOW_RESOLVE_PREVIEW,\n policy.message,\n { code: 'shadow.invalidInput', details: { hasPolicy: input.policy != null } },\n );\n }\n const resolved = resolveShadowTarget(\n EDITOR_COMMAND_ID.SHADOW_RESOLVE_PREVIEW,\n state,\n input,\n operations,\n );\n if (!resolved.ok) return resolved.result;\n const receiverIds = normalizeEditorCommandIdList(input.receiverIds ?? []);\n const casterId = getResolvedTargetCasterId(resolved.target);\n const planInput: StrictEditorShadowResolvePlanInput = {\n document: resolved.target.document,\n casterId,\n explicitReceiverIds: receiverIds.length > 0 ? receiverIds : undefined,\n strictExplicitReceivers: receiverIds.length > 0,\n ...(policy.settings !== undefined ? { settings: { instance: policy.settings } } : {}),\n };\n const shadowPreviewDebugInfo = operations.getShadowPreviewDebugInfo?.() ?? null;\n const runtimeReceiverMeshCount = shadowPreviewDebugInfo?.shadowMapExperiment?.receiverMeshCount ?? 0;\n const reconciledRuntimeReceiverMeshCount = receiverIds.length === 0 ? runtimeReceiverMeshCount : 0;\n const legacyPlan = mapShadowPlan(\n resolveEditorShadowPlan(planInput),\n reconciledRuntimeReceiverMeshCount,\n );\n const canonicalPlan = input.policy === undefined && receiverIds.length === 0\n ? resolveCanonicalShadowMapExperimentPlan(options, resolved.target, operations)\n : null;\n const plan = canonicalPlan ?? legacyPlan;\n const plannedReceiverIds = plan.receiverIds;\n const allReceivers = mapShadowReceivers(\n collectEditorShadowReceiverCandidates({\n document: resolved.target.document,\n casterId,\n explicitReceiverIds: receiverIds.length > 0\n ? receiverIds\n : plannedReceiverIds.length > 0\n ? plannedReceiverIds\n : undefined,\n }),\n state,\n {\n casterId,\n lightId: plan.lightId,\n projectionContext: createShadowProjectionContext(resolved.target, operations),\n },\n );\n const receiverIdSet = new Set(plannedReceiverIds);\n const receivers = receiverIds.length > 0 || canonicalPlan\n ? allReceivers.filter(receiver => receiverIdSet.has(receiver.receiverId))\n : allReceivers;\n const light = createShadowLightSummary(resolved.target.document, plan.lightId);\n return {\n target: resolved.target.target,\n plan,\n caster: createShadowDebugTargetSummary(resolved.target, state, createShadowProjectionContext(resolved.target, operations)),\n ...(light ? { light } : {}),\n footprint: createShadowFootprintSummary(\n plan,\n receivers,\n state,\n createShadowProjectionContext(resolved.target, operations),\n light,\n reconciledRuntimeReceiverMeshCount,\n ),\n receivers,\n diagnostics: createShadowTargetDiagnostics(resolved.target),\n } satisfies EditorCommandShadowResolvePreviewOutput;\n },\n inspectDebug(input) {\n const resolved = resolveShadowTarget(\n EDITOR_COMMAND_ID.SHADOW_DEBUG_INSPECT,\n state,\n input,\n operations,\n );\n if (!resolved.ok) return resolved.result;\n return createShadowDebugInspectOutput(resolved.target, state, {\n projectionContext: createShadowProjectionContext(resolved.target, operations),\n }, {\n shadowPreviewDebugInfo: operations.getShadowPreviewDebugInfo?.() ?? null,\n canonicalPlan: resolveCanonicalShadowMapExperimentPlan(options, resolved.target, operations),\n });\n },\n enterDebugContext(input) {\n const resolved = resolveShadowTarget(\n EDITOR_COMMAND_ID.SHADOW_DEBUG_CONTEXT_ENTER,\n state,\n input,\n operations,\n );\n if (!resolved.ok) return resolved.result;\n return enterShadowDebugContext(\n state,\n renderUi,\n operations,\n resolved.target,\n input,\n resolveCanonicalShadowMapExperimentPlan(options, resolved.target, operations),\n );\n },\n clearDebugContext() {\n return clearShadowDebugContext(state, renderUi, operations);\n },\n setDebugOverlay(input) {\n const resolved = resolveShadowTarget(\n EDITOR_COMMAND_ID.SHADOW_DEBUG_OVERLAY_SET,\n state,\n input,\n operations,\n );\n if (!resolved.ok) return resolved.result;\n const inspect = createShadowDebugInspectOutput(resolved.target, state, {\n receiverIds: input.receiverIds ?? [],\n projectionContext: createShadowProjectionContext(resolved.target, operations),\n }, {\n canonicalPlan: resolveCanonicalShadowMapExperimentPlan(options, resolved.target, operations),\n });\n const overlayItems = createShadowDebugOverlayItems(inspect, input);\n const overlayIds = operations.setShadowDebugOverlay?.(overlayItems)\n ?? state.projection?.setShadowDebugOverlay?.(overlayItems)\n ?? overlayItems.map(item => item.id);\n operations.requestSceneFrame('agent-shadow-debug-overlay-set');\n renderUi();\n const diagnostics = [\n ...(inspect.diagnostics ?? []),\n ...(!overlayItems.length ? [{\n severity: 'warning' as const,\n source: 'editor' as const,\n code: 'shadow.debugOverlayEmpty',\n message: 'No shadow debug overlay items could be created for the resolved target.',\n }] : []),\n ];\n return {\n enabled: overlayItems.length > 0,\n target: inspect.target,\n overlayIds,\n ...(diagnostics.length ? { diagnostics } : {}),\n } satisfies EditorCommandShadowDebugOverlaySetOutput;\n },\n clearDebugOverlay() {\n const cleared = operations.clearShadowDebugOverlay?.()\n ?? state.projection?.clearShadowDebugOverlay?.()\n ?? false;\n operations.requestSceneFrame('agent-shadow-debug-overlay-clear');\n renderUi();\n return {\n cleared,\n } satisfies EditorCommandShadowDebugOverlayClearOutput;\n },\n measureVisibility(input) {\n const resolved = resolveShadowTarget(\n EDITOR_COMMAND_ID.SHADOW_DEBUG_VISIBILITY_MEASURE,\n state,\n input,\n operations,\n );\n if (!resolved.ok) return resolved.result;\n const inspect = createShadowDebugInspectOutput(resolved.target, state, {\n receiverIds: input.receiverIds ?? [],\n projectionContext: createShadowProjectionContext(resolved.target, operations),\n }, {\n canonicalPlan: resolveCanonicalShadowMapExperimentPlan(options, resolved.target, operations),\n });\n return createShadowDebugVisibilityMeasureOutput(inspect, input);\n },\n async bakeStatic(input) {\n const resolved = resolveShadowTarget(\n EDITOR_COMMAND_ID.SHADOW_STATIC_BAKE,\n state,\n input,\n operations,\n );\n if (!resolved.ok) return resolved.result;\n const receiverIds = normalizeEditorCommandIdList(input.receiverIds ?? []);\n const casterId = getResolvedTargetCasterId(resolved.target);\n const quality = input.quality && input.quality !== 'inherit' ? input.quality : undefined;\n const effectivePolicy = getResolvedTargetShadowPolicy(resolved.target);\n const bakePolicy = mergeEditorShadowSettings(\n effectivePolicy,\n {\n mode: 'static',\n ...(quality ? { quality } : {}),\n },\n );\n const planInput: StrictEditorShadowResolvePlanInput = {\n document: resolved.target.document,\n casterId,\n explicitReceiverIds: receiverIds.length > 0 ? receiverIds : undefined,\n strictExplicitReceivers: receiverIds.length > 0,\n settings: { instance: bakePolicy },\n };\n const plan = mapShadowPlan(resolveEditorShadowPlan(planInput));\n const targetDiagnostics = createShadowTargetDiagnostics(resolved.target);\n if (resolved.target.kind !== 'scene') {\n return {\n target: resolved.target.target,\n baked: false,\n plan,\n stale: true,\n diagnostics: [\n ...targetDiagnostics,\n {\n severity: 'warning',\n source: 'editor',\n code: 'shadow.staticBakeSceneOnly',\n message: 'Static shadow baking runs against the main scene. Prefab stage policies are baked after prefab instances are placed in a scene.',\n },\n ],\n } satisfies EditorCommandShadowStaticBakeOutput;\n }\n if (!operations.runRenderingAction) {\n return {\n target: resolved.target.target,\n baked: false,\n plan,\n stale: true,\n diagnostics: [\n ...targetDiagnostics,\n {\n severity: 'warning',\n source: 'editor',\n code: 'shadow.staticBakeUnavailable',\n message: 'Static shadow bake is unavailable because this editor session does not expose the rendering action pipeline.',\n },\n ],\n } satisfies EditorCommandShadowStaticBakeOutput;\n }\n const actionResult = await operations.runRenderingAction('bake-static-shadows');\n const bakedSourceNodeIds = readRenderingActionStaticBakeSourceNodeIds(actionResult);\n const targetConfirmed = bakedSourceNodeIds?.includes(casterId) === true;\n const baked = actionResult.ok === true && actionResult.changed === true && targetConfirmed;\n const bakeDiagnostic = createStaticBakeDiagnostic(actionResult, targetConfirmed, bakedSourceNodeIds);\n return {\n target: resolved.target.target,\n baked,\n plan,\n stale: !baked,\n diagnostics: [\n ...targetDiagnostics,\n bakeDiagnostic,\n ],\n } satisfies EditorCommandShadowStaticBakeOutput;\n },\n invalidateStatic(input) {\n const resolved = resolveShadowTarget(\n EDITOR_COMMAND_ID.SHADOW_STATIC_INVALIDATE,\n state,\n input,\n operations,\n );\n if (!resolved.ok) return resolved.result;\n const targetDiagnostics = createShadowTargetDiagnostics(resolved.target);\n if (resolved.target.kind !== 'scene') {\n return {\n target: resolved.target.target,\n invalidated: false,\n stale: true,\n diagnostics: [\n ...targetDiagnostics,\n {\n severity: 'warning',\n source: 'editor',\n code: 'shadow.staticInvalidateSceneOnly',\n message: 'Static shadow invalidation runs against scene instances. Prefab stage policies are invalidated after placement in a scene.',\n },\n ],\n } satisfies EditorCommandShadowStaticInvalidateOutput;\n }\n const plan = mapShadowPlan(resolveEditorShadowPlan({\n document: resolved.target.document,\n casterId: resolved.target.objectId,\n }));\n if (plan.backend !== 'static-baked') {\n return {\n target: resolved.target.target,\n invalidated: false,\n stale: false,\n diagnostics: [\n ...targetDiagnostics,\n {\n severity: 'warning',\n source: 'editor',\n code: 'shadow.staticInvalidateNonStaticTarget',\n message: 'Static shadow invalidation only applies to targets resolved to the static-baked backend.',\n details: { backend: plan.backend, mode: plan.mode },\n },\n ],\n } satisfies EditorCommandShadowStaticInvalidateOutput;\n }\n if (!operations.invalidateStaticShadowArtifact) {\n return {\n target: resolved.target.target,\n invalidated: false,\n stale: true,\n diagnostics: [\n ...targetDiagnostics,\n {\n severity: 'warning',\n source: 'editor',\n code: 'shadow.staticInvalidateUnavailable',\n message: 'Static shadow invalidation is unavailable because this editor session does not expose the shadow preview artifact lifecycle.',\n },\n ],\n } satisfies EditorCommandShadowStaticInvalidateOutput;\n }\n const invalidated = operations.invalidateStaticShadowArtifact();\n return {\n target: resolved.target.target,\n invalidated,\n stale: true,\n diagnostics: [\n ...targetDiagnostics,\n {\n severity: invalidated ? 'info' : 'warning',\n source: 'editor',\n code: invalidated ? 'shadow.staticInvalidated' : 'shadow.staticInvalidateNoArtifact',\n message: invalidated\n ? 'Static shadow preview artifact was invalidated; run shadow.static.bake to refresh scene artifacts.'\n : 'Static shadow target is static, but no active preview artifact was available to invalidate.',\n details: { backend: plan.backend, mode: plan.mode },\n },\n ],\n } satisfies EditorCommandShadowStaticInvalidateOutput;\n },\n };\n}\n\nfunction readShadowMapExperimentConfig<TDocument, TPatch, TAsset>(\n options: LocalEditorHarnessOptions<TDocument, TPatch, TAsset>,\n capabilityId: string,\n): { ok: true; config: ShadowMapExperimentConfig | null } | { ok: false; result: ReturnType<typeof createLocalEditorCommandFailure> } {\n const value = options.documentAdapter.getShadowMapExperimentConfig?.() ?? null;\n if (value === null) return { ok: true, config: null };\n try {\n assertShadowMapExperimentConfig(value);\n return { ok: true, config: structuredClone(value) };\n } catch (error) {\n return {\n ok: false,\n result: createLocalEditorCommandFailure(\n capabilityId,\n error instanceof Error ? error.message : String(error),\n { code: 'shadowMapExperiment.invalidConfig' },\n ),\n };\n }\n}\n\nfunction createShadowMapExperimentConfigOutput(\n config: ShadowMapExperimentConfig | null,\n): EditorCommandShadowMapExperimentConfigGetOutput {\n return {\n configured: config !== null,\n readonly: true,\n config: config ? structuredClone(config) as unknown as Record<string, unknown> : null,\n qualityProfileIds: config ? Object.keys(config.qualityProfiles).sort() : [],\n behaviorProfileIds: config ? Object.keys(config.behaviorProfiles).sort() : [],\n };\n}\n\nfunction readShadowMapExperimentPlan<TDocument, TPatch, TAsset>(\n options: LocalEditorHarnessOptions<TDocument, TPatch, TAsset>,\n document: TDocument,\n): ShadowMapExperimentPlan | null {\n try {\n const value = options.documentAdapter?.getShadowMapExperimentPlan?.(document) ?? null;\n if (value === null) return null;\n return createShadowMapExperimentPlanSnapshot(value);\n } catch {\n return null;\n }\n}\n\nfunction readShadowMapExperimentExecutionPlan<TDocument>(\n operations: LocalEditorCommandCapabilitySourceOperations<TDocument>,\n): ShadowMapExperimentPlan | null {\n if (operations.getShadowMapExperimentExecutionPlan) {\n try {\n const value = operations.getShadowMapExperimentExecutionPlan();\n if (value === null) return null;\n return createShadowMapExperimentPlanSnapshot(value);\n } catch {\n return null;\n }\n }\n return null;\n}\n\nfunction resolveCanonicalShadowMapExperimentPlan<TDocument, TPatch, TAsset>(\n options: LocalEditorHarnessOptions<TDocument, TPatch, TAsset>,\n target: ResolvedShadowTarget<TDocument>,\n operations: LocalEditorCommandCapabilitySourceOperations<TDocument>,\n): EditorCommandShadowResolvedPlan | null {\n if (target.kind !== 'scene') return null;\n const sourcePlan = readShadowMapExperimentPlan(options, target.rawDocument);\n const shadowMapExperimentEvidence = operations.getShadowPreviewDebugInfo?.()?.shadowMapExperiment ?? null;\n const directExecutionPlan = readShadowMapExperimentExecutionPlan(operations);\n const verifiedExecutionPlan = resolveEvidenceVerifiedShadowMapExperimentPlan(\n directExecutionPlan,\n sourcePlan,\n shadowMapExperimentEvidence,\n );\n const executionPlan = verifiedExecutionPlan;\n const projectionPlan = sourcePlan?.enabled === true && executionPlan?.enabled !== true\n ? sourcePlan\n : executionPlan ?? sourcePlan;\n if (!projectionPlan?.enabled) return null;\n const executionObjects = executionPlan?.enabled\n ? resolveShadowMapExperimentPlanObjectsForGameObject(executionPlan, target.document, target.objectId)\n : [];\n const sourceObjects = sourcePlan?.enabled\n ? resolveShadowMapExperimentPlanObjectsForGameObject(sourcePlan, target.document, target.objectId)\n : [];\n const objects = executionObjects.length > 0 ? executionObjects : sourceObjects;\n const object = objects[0];\n if (!object) return null;\n\n const cast = executionObjects.some(candidate => candidate.cast);\n const receiverIds = cast && executionPlan\n ? resolveShadowMapExperimentAuthoringReceiverIds(executionPlan, target.document, target.objectId)\n : [];\n const diagnostics: EditorCommandDiagnostic[] = [];\n if (executionObjects.length > 0 && executionPlan) {\n diagnostics.push({\n severity: 'info',\n source: 'editor',\n code: directExecutionPlan ? 'shadow.canonicalExecutionPlan' : 'shadow.canonicalExecutionEvidence',\n message: directExecutionPlan\n ? 'Editor shadow preview is resolved from the Renderer plan that is currently in effect.'\n : 'Editor shadow preview is resolved from the complete Renderer evidence plan that is currently in effect.',\n details: {\n planSchemaVersion: executionPlan.schemaVersion,\n planRevision: executionPlan.revision,\n qualityProfileId: executionPlan.qualityProfileId,\n behaviorProfileId: object.behaviorProfileId,\n updateClass: object.updateClass,\n },\n });\n } else {\n diagnostics.push({\n severity: 'warning',\n source: 'editor',\n code: 'shadow.canonicalExecutionPending',\n message: 'The authored Shadow Map plan is not active in Renderer yet, so the target currently casts no preview shadow.',\n details: {\n sourcePlanRevision: sourcePlan?.revision ?? null,\n effectivePlanRevision: executionPlan?.revision ?? null,\n sourcePlanFingerprint: sourcePlan ? createShadowMapExperimentPlanFingerprint(sourcePlan) : null,\n effectivePlanFingerprint: shadowMapExperimentEvidence?.planFingerprint ?? null,\n },\n });\n }\n if (executionObjects.some(candidate => candidate.cast !== executionObjects[0]?.cast)) {\n diagnostics.push({\n severity: 'info',\n source: 'editor',\n code: 'shadow.canonicalTargetMixedExecution',\n message: 'The authored object contains multiple runtime entities with mixed caster state; object-level preview reports active when any entity casts.',\n details: {\n entityIds: executionObjects.map(candidate => candidate.entityId),\n },\n });\n }\n if (sourcePlan && executionPlan && sourcePlan.revision !== executionPlan.revision) {\n diagnostics.push({\n severity: 'warning',\n source: 'editor',\n code: 'shadow.canonicalExecutionRevisionMismatch',\n message: 'Renderer kept a previous Shadow Map plan after the authored plan changed.',\n details: {\n sourcePlanRevision: sourcePlan.revision,\n effectivePlanRevision: executionPlan.revision,\n },\n });\n }\n for (const diagnostic of projectionPlan.diagnostics) {\n if (diagnostic.entityId && !objects.some(candidate => candidate.entityId === diagnostic.entityId)) continue;\n diagnostics.push({\n severity: diagnostic.severity,\n source: 'runtime',\n code: diagnostic.code,\n message: diagnostic.message,\n ...(diagnostic.details ? { details: structuredClone(diagnostic.details) as EditorCommandJsonObject } : {}),\n });\n }\n const resolution = resolveShadowMapExperimentResolution(projectionPlan);\n return {\n casterId: target.objectId,\n receiverIds,\n ...(cast && executionPlan ? { lightId: executionPlan.light.entityId } : {}),\n backend: cast ? 'dynamic-map' : 'none',\n mode: cast ? 'dynamic' : 'none',\n quality: resolveShadowMapExperimentQuality(resolution),\n params: {\n opacity: projectionPlan.generator.darkness,\n softness: projectionPlan.generator.filter === 'hard' ? 0 : 0.5,\n bias: projectionPlan.generator.bias,\n normalBias: projectionPlan.generator.normalBias,\n maxDistance: projectionPlan.generator.bounds.far,\n resolution,\n cascadeCount: 1,\n bakeSamples: 1,\n blurKernel: 0,\n },\n diagnostics,\n };\n}\n\nfunction resolveEvidenceVerifiedShadowMapExperimentPlan(\n executionPlan: ShadowMapExperimentPlan | null,\n sourcePlan: ShadowMapExperimentPlan | null,\n evidence: LocalEditorCommandShadowPreviewDebugInfo['shadowMapExperiment'] | null | undefined,\n): ShadowMapExperimentPlan | null {\n if (executionPlan) return executionPlan;\n if (evidence?.effectivePlan) {\n try {\n const effectivePlan = createShadowMapExperimentPlanSnapshot(evidence.effectivePlan);\n if (\n evidence.planFingerprint\n && evidence.planFingerprint !== createShadowMapExperimentPlanFingerprint(effectivePlan)\n ) return null;\n return effectivePlan;\n } catch {\n return null;\n }\n }\n if (\n sourcePlan\n && evidence?.enabled === true\n && evidence.planFingerprint === createShadowMapExperimentPlanFingerprint(sourcePlan)\n ) {\n return sourcePlan;\n }\n return null;\n}\n\nfunction resolveShadowMapExperimentPlanObjectsForGameObject(\n plan: ShadowMapExperimentPlan,\n document: EditorSceneDocument,\n objectId: string,\n): ShadowMapExperimentPlan['objects'][number][] {\n const runtimeEntityIds = new Set(resolveEditorSceneGameObjectRuntimeEntityIds(document, objectId));\n runtimeEntityIds.add(objectId);\n return plan.objects.filter(candidate => runtimeEntityIds.has(candidate.entityId));\n}\n\nfunction resolveShadowMapExperimentAuthoringReceiverIds(\n plan: ShadowMapExperimentPlan,\n document: EditorSceneDocument,\n casterObjectId: string,\n): string[] {\n const receivingEntityIds = new Set(\n plan.objects.filter(candidate => candidate.receive).map(candidate => candidate.entityId),\n );\n return document.scene.gameObjects\n .filter(candidate => candidate.id !== casterObjectId)\n .filter(candidate => resolveEditorSceneGameObjectRuntimeEntityIds(document, candidate.id)\n .some(entityId => receivingEntityIds.has(entityId)))\n .map(candidate => candidate.id);\n}\n\nfunction resolveShadowMapExperimentQuality(\n resolution: EditorCommandShadowResolvedPlan['params']['resolution'],\n): EditorCommandShadowResolvedPlan['quality'] {\n if (resolution <= 512) return 'low';\n if (resolution <= 1024) return 'medium';\n if (resolution <= 2048) return 'high';\n return 'ultra';\n}\n\nfunction resolveShadowMapExperimentResolution(\n plan: ShadowMapExperimentPlan,\n): EditorCommandShadowResolvedPlan['params']['resolution'] {\n const resolution = Math.max(\n plan.generator.maps.staticResolution,\n plan.generator.maps.dynamicResolution,\n plan.generator.maps.compositeResolution,\n );\n if (resolution <= 512) return 512;\n if (resolution <= 1024) return 1024;\n if (resolution <= 2048) return 2048;\n return 4096;\n}\n\nfunction resolveShadowMapExperimentTarget<TDocument, TPatch>(\n capabilityId: string,\n state: LocalEditorCommandHarnessState<TDocument, TPatch>,\n input: EditorCommandShadowMapExperimentPolicyGetInput,\n operations: LocalEditorCommandCapabilitySourceOperations<TDocument>,\n): { ok: true; target: ResolvedShadowMapExperimentTarget<TDocument> } | { ok: false; result: ReturnType<typeof createLocalEditorCommandFailure> } {\n if (state.mode !== 'editor' || !state.session) {\n return {\n ok: false,\n result: createLocalEditorCommandFailure(capabilityId, 'Editor is not in edit mode.', { code: 'editor.notReady' }),\n };\n }\n const sessionState = state.session.getState({ cloneDocuments: false });\n const document = asEditorSceneDocument(sessionState.workingDocument);\n if (!document) {\n return {\n ok: false,\n result: createLocalEditorCommandFailure(capabilityId, 'Shadow Map profiles require an editor scene document.', {\n code: 'shadowMapExperiment.unsupportedDocument',\n }),\n };\n }\n if (input.scope === 'scene') {\n if (!hasEditorCommandSafeSceneScope(operations)) {\n return {\n ok: false,\n result: createLocalEditorCommandFailure(capabilityId, 'Scene Shadow Map profiles require the active Scene Hierarchy scope.', {\n code: 'shadowMapExperiment.scopeMismatch',\n }),\n };\n }\n return {\n ok: true,\n target: {\n kind: 'scene',\n target: { scope: 'scene' },\n document,\n rawDocument: sessionState.workingDocument,\n },\n };\n }\n if (input.scope === 'object') {\n const objectId = normalizeEditorCommandString(input.objectId);\n const gameObject = objectId && isEditorCommandSafeSceneObjectId(operations, objectId)\n ? findShadowGameObject(document, objectId)\n : null;\n if (!gameObject) {\n return {\n ok: false,\n result: createLocalEditorCommandFailure(capabilityId, objectId\n ? `Shadow Map target object not found: ${objectId}`\n : 'objectId is required for object scope.', {\n code: objectId ? 'shadowMapExperiment.targetNotFound' : 'shadowMapExperiment.targetRequired',\n objectId: objectId || undefined,\n }),\n };\n }\n return {\n ok: true,\n target: {\n kind: 'object',\n target: { scope: 'object', objectId },\n document,\n rawDocument: sessionState.workingDocument,\n objectId,\n gameObject,\n },\n };\n }\n if (input.scope !== 'prefab-node') {\n return {\n ok: false,\n result: createLocalEditorCommandFailure(capabilityId, `Unsupported Shadow Map target scope: ${String(input.scope)}`, {\n code: 'shadowMapExperiment.invalidScope',\n }),\n };\n }\n const details = operations.getPrefabStageDetails();\n if (!details) {\n return {\n ok: false,\n result: createLocalEditorCommandFailure(capabilityId, 'Open the target Prefab stage before editing a prefab-node profile.', {\n code: 'prefab.stageNotOpen',\n }),\n };\n }\n const requestedAssetId = normalizeEditorCommandString(input.prefabAssetId);\n if (requestedAssetId && requestedAssetId !== details.stage.assetId && requestedAssetId !== details.stage.browserAssetId) {\n return {\n ok: false,\n result: createLocalEditorCommandFailure(capabilityId, `Open Prefab stage does not match ${requestedAssetId}.`, {\n code: 'prefab.stageAssetMismatch',\n details: { requestedAssetId, openAssetId: details.stage.assetId },\n }),\n };\n }\n if (!hasActivePrefabHierarchyScope(operations, details)) {\n return {\n ok: false,\n result: createLocalEditorCommandFailure(capabilityId, 'Open Prefab stage does not own the active Hierarchy authority.', {\n code: 'shadowMapExperiment.scopeMismatch',\n details: { prefabAssetId: details.stage.assetId },\n }),\n };\n }\n const prefabAsset = findEditorScenePrefabAsset(document, details.stage.assetId);\n const rootNodeId = readEditorScenePrefabRootNodeId(prefabAsset);\n const safeModel = createEditorCommandSafePrefabReadModel(\n operations.getHierarchyReadModel(),\n details.nodeDetails,\n );\n const nodeId = resolveSafePrefabNodeAuthoredId(\n safeModel,\n normalizePrefabNodeId(input.nodeId),\n );\n const node = prefabAsset && nodeId ? findEditorScenePrefabNode(prefabAsset, nodeId) : null;\n if (!prefabAsset || !rootNodeId || !nodeId || !node) {\n return {\n ok: false,\n result: createLocalEditorCommandFailure(capabilityId, `Prefab node not found: ${nodeId ?? '(none)'}`, {\n code: 'prefab.nodeNotFound',\n details: { prefabAssetId: details.stage.assetId, nodeId },\n }),\n };\n }\n return {\n ok: true,\n target: {\n kind: 'prefab-node',\n target: { scope: 'prefab-node', prefabAssetId: details.stage.assetId, nodeId },\n document,\n rawDocument: sessionState.workingDocument,\n prefabAssetId: details.stage.assetId,\n nodeId,\n rootNodeId,\n prefabAsset,\n node,\n },\n };\n}\n\nfunction validateShadowMapExperimentPolicySetInput(\n input: EditorCommandShadowMapExperimentPolicySetInput,\n config: ShadowMapExperimentConfig | null,\n): { ok: true } | { ok: false; message: string } {\n const hasQualityProfile = Object.prototype.hasOwnProperty.call(input, 'qualityProfile');\n const hasBehaviorProfile = Object.prototype.hasOwnProperty.call(input, 'behaviorProfile');\n if (!hasQualityProfile && !hasBehaviorProfile) return { ok: false, message: 'At least one profile reference is required.' };\n if (input.scope !== 'scene' && hasQualityProfile) {\n return { ok: false, message: 'qualityProfile is only valid for scene scope.' };\n }\n if (input.qualityProfile !== undefined && input.qualityProfile !== null) {\n if (!config || !Object.prototype.hasOwnProperty.call(config.qualityProfiles, input.qualityProfile)) {\n return { ok: false, message: `Unknown quality profile: ${input.qualityProfile}` };\n }\n }\n if (input.behaviorProfile !== undefined && input.behaviorProfile !== null) {\n if (!config || !Object.prototype.hasOwnProperty.call(config.behaviorProfiles, input.behaviorProfile)) {\n return { ok: false, message: `Unknown behavior profile: ${input.behaviorProfile}` };\n }\n }\n return { ok: true };\n}\n\nfunction createShadowMapExperimentPolicyOutput<TDocument>(\n resolved: ResolvedShadowMapExperimentTarget<TDocument>,\n config: ShadowMapExperimentConfig | null,\n plan: ShadowMapExperimentPlan | null,\n): EditorCommandShadowMapExperimentPolicyOutput {\n const authored = readAuthoredShadowMapExperimentProfiles(resolved);\n const plannedBehavior = resolved.kind === 'object'\n ? summarizeShadowMapExperimentPlanObjectBehavior(\n plan,\n resolveEditorSceneGameObjectRuntimeEntityIds(resolved.document, resolved.objectId),\n )\n : null;\n const qualityProfileId = resolved.kind === 'object'\n ? plannedBehavior\n ? plan?.qualityProfileId ?? null\n : null\n : plan?.qualityProfileId\n ?? authored.qualityProfile\n ?? resolved.document.scene.shadowMapExperiment?.qualityProfile\n ?? config?.defaultQualityProfile\n ?? null;\n const behaviorProfileId = resolved.kind === 'object'\n ? plannedBehavior?.behaviorProfileId ?? null\n : resolveEffectiveShadowMapExperimentBehaviorProfile(resolved, config, plan);\n const behavior = behaviorProfileId ? config?.behaviorProfiles[behaviorProfileId] : undefined;\n return {\n target: resolved.target,\n authored,\n effective: {\n qualityProfileId,\n behaviorProfileId,\n cast: plannedBehavior ? plannedBehavior.cast : (behavior ? behavior.cast === 'enabled' : null),\n receive: plannedBehavior ? plannedBehavior.receive : (behavior ? behavior.receive === 'enabled' : null),\n updateClass: plannedBehavior\n ? plannedBehavior.updateClass\n : (behavior?.updateClass === 'auto' || !behavior ? null : behavior.updateClass),\n },\n qualityProfileIds: config ? Object.keys(config.qualityProfiles).sort() : [],\n behaviorProfileIds: config ? Object.keys(config.behaviorProfiles).sort() : [],\n };\n}\n\nfunction summarizeShadowMapExperimentPlanObjectBehavior(\n plan: ShadowMapExperimentPlan | null,\n runtimeEntityIds: readonly string[],\n): {\n behaviorProfileId: string | null;\n cast: boolean | null;\n receive: boolean | null;\n updateClass: ShadowMapExperimentPlan['objects'][number]['updateClass'] | null;\n} | null {\n const entityIds = new Set(runtimeEntityIds);\n const candidates = plan?.objects.filter(object => entityIds.has(object.entityId)) ?? [];\n const first = candidates[0];\n if (!first) return null;\n const homogeneous = candidates.every(candidate => (\n candidate.behaviorProfileId === first.behaviorProfileId\n && candidate.cast === first.cast\n && candidate.receive === first.receive\n && candidate.updateClass === first.updateClass\n ));\n if (!homogeneous) {\n return { behaviorProfileId: null, cast: null, receive: null, updateClass: null };\n }\n return {\n behaviorProfileId: first.behaviorProfileId,\n cast: first.cast,\n receive: first.receive,\n updateClass: first.updateClass,\n };\n}\n\nfunction readAuthoredShadowMapExperimentProfiles<TDocument>(\n resolved: ResolvedShadowMapExperimentTarget<TDocument>,\n): { qualityProfile: string | null; behaviorProfile: string | null } {\n if (resolved.kind === 'scene') {\n return {\n qualityProfile: resolved.document.scene.shadowMapExperiment?.qualityProfile ?? null,\n behaviorProfile: resolved.document.scene.shadowMapExperiment?.behaviorProfile ?? null,\n };\n }\n if (resolved.kind === 'object') {\n return { qualityProfile: null, behaviorProfile: resolved.gameObject.shadowMapExperiment?.behaviorProfile ?? null };\n }\n const behaviorProfile = resolved.node.defaults?.shadowMapExperiment?.behaviorProfile;\n return { qualityProfile: null, behaviorProfile: behaviorProfile ?? null };\n}\n\nfunction resolveEffectiveShadowMapExperimentBehaviorProfile<TDocument>(\n resolved: ResolvedShadowMapExperimentTarget<TDocument>,\n config: ShadowMapExperimentConfig | null,\n plan: ShadowMapExperimentPlan | null,\n): string | null {\n if (resolved.kind === 'scene') {\n return resolved.document.scene.shadowMapExperiment?.behaviorProfile ?? config?.defaultBehaviorProfile ?? null;\n }\n if (resolved.kind === 'object') {\n const relation = resolveEditorScenePrefabInstanceRelation(resolved.document, resolved.objectId);\n const modelRenderer = findEditorSceneModelRenderer(resolved.gameObject);\n const sourceAsset = relation.sourceAsset\n ?? (modelRenderer ? resolved.document.assets.find(asset => asset.id === modelRenderer.assetId) : undefined);\n return resolved.gameObject.shadowMapExperiment?.behaviorProfile\n ?? relation.definition?.prefab?.defaults?.shadowMapExperiment?.behaviorProfile\n ?? readAssetShadowMapExperimentBehaviorProfile(sourceAsset)\n ?? resolved.document.scene.shadowMapExperiment?.behaviorProfile\n ?? config?.defaultBehaviorProfile\n ?? null;\n }\n const sourceAsset = resolved.node.kind === 'model' && resolved.node.sourceAssetId\n ? resolved.document.assets.find(asset => asset.id === resolved.node.sourceAssetId)\n : undefined;\n let behaviorProfile = config?.defaultBehaviorProfile ?? null;\n behaviorProfile = resolved.document.scene.shadowMapExperiment?.behaviorProfile ?? behaviorProfile;\n behaviorProfile = readAssetShadowMapExperimentBehaviorProfile(sourceAsset) ?? behaviorProfile;\n behaviorProfile = resolved.prefabAsset.prefab?.defaults?.shadowMapExperiment?.behaviorProfile ?? behaviorProfile;\n const nodes = readEditorScenePrefabNodes(resolved.prefabAsset);\n const byId = new Map(nodes.map(node => [node.id, node]));\n const ancestry: typeof nodes = [];\n let current: (typeof nodes)[number] | undefined = resolved.node;\n while (current) {\n ancestry.unshift(current);\n current = current.parentId ? byId.get(current.parentId) : undefined;\n }\n for (const node of ancestry) {\n behaviorProfile = node.defaults?.shadowMapExperiment?.behaviorProfile ?? behaviorProfile;\n }\n return behaviorProfile;\n}\n\nfunction readAssetShadowMapExperimentBehaviorProfile(asset: unknown): string | null {\n if (!isRecord(asset) || !isRecord(asset.defaults) || !isRecord(asset.defaults.shadowMapExperiment)) return null;\n return normalizeEditorCommandString(asset.defaults.shadowMapExperiment.behaviorProfile) || null;\n}\n\nfunction setShadowMapExperimentPolicy<TDocument, TPatch, TAsset>(\n state: LocalEditorCommandHarnessState<TDocument, TPatch>,\n options: LocalEditorHarnessOptions<TDocument, TPatch, TAsset>,\n renderUi: () => void,\n operations: LocalEditorCommandCapabilitySourceOperations<TDocument>,\n resolved: ResolvedShadowMapExperimentTarget<TDocument>,\n input: EditorCommandShadowMapExperimentPolicySetInput,\n config: ShadowMapExperimentConfig | null,\n): EditorCommandShadowMapExperimentPolicySetOutput | ReturnType<typeof createLocalEditorCommandFailure> {\n if (!state.session) {\n return createLocalEditorCommandFailure(\n EDITOR_COMMAND_ID.SHADOW_MAP_EXPERIMENT_POLICY_SET,\n 'Editor is not in edit mode.',\n { code: 'editor.notReady' },\n );\n }\n const authored = readAuthoredShadowMapExperimentProfiles(resolved);\n const hasQualityProfile = Object.prototype.hasOwnProperty.call(input, 'qualityProfile');\n const hasBehaviorProfile = Object.prototype.hasOwnProperty.call(input, 'behaviorProfile');\n const qualityUnchanged = !hasQualityProfile || authored.qualityProfile === (input.qualityProfile ?? null);\n const behaviorUnchanged = !hasBehaviorProfile || authored.behaviorProfile === (input.behaviorProfile ?? null);\n if (qualityUnchanged && behaviorUnchanged) {\n return {\n changed: false,\n policy: createShadowMapExperimentPolicyOutput(\n resolved,\n config,\n readShadowMapExperimentPlan(options, resolved.rawDocument),\n ),\n };\n }\n let changed = false;\n if (resolved.kind === 'scene') {\n const patch = options.documentAdapter.createShadowMapExperimentProfilesPatch?.({\n document: resolved.rawDocument,\n ...(hasQualityProfile ? { qualityProfile: input.qualityProfile ?? null } : {}),\n ...(hasBehaviorProfile ? { behaviorProfile: input.behaviorProfile ?? null } : {}),\n });\n if (!patch) {\n return createLocalEditorCommandFailure(\n EDITOR_COMMAND_ID.SHADOW_MAP_EXPERIMENT_POLICY_SET,\n 'The project rendering capability does not expose a scene Shadow Map profile patch.',\n { code: 'shadowMapExperiment.scenePatchUnavailable' },\n );\n }\n const result = state.session.dispatch({\n type: 'document.patch',\n label: patch.label ?? 'Agent set scene Shadow Map profiles',\n patch: patch.patch,\n targetId: patch.changedId,\n ...operations.withProjectionImpact(operations.resolveProjectionImpact(\n patch,\n operations.createReprojectProjectionImpact(patch.reprojectIds ?? []),\n )),\n });\n changed = result.documentChanged;\n } else if (resolved.kind === 'object') {\n const patch = options.documentAdapter.createSerializedPropertyPatch({\n document: resolved.rawDocument,\n targetId: resolved.objectId,\n path: 'shadowMapExperiment.behaviorProfile',\n value: input.behaviorProfile ?? null,\n commitMode: 'change',\n persistence: 'document',\n source: 'custom',\n });\n if (!patch) {\n return createLocalEditorCommandFailure(\n EDITOR_COMMAND_ID.SHADOW_MAP_EXPERIMENT_POLICY_SET,\n `Unable to create Shadow Map profile patch for ${resolved.objectId}.`,\n { code: 'shadowMapExperiment.objectPatchUnavailable', objectId: resolved.objectId },\n );\n }\n const result = state.session.dispatch({\n type: 'document.patch',\n label: patch.label ?? `Agent set Shadow Map behavior profile ${resolved.objectId}`,\n patch: patch.patch,\n targetId: resolved.objectId,\n ...operations.withProjectionImpact(operations.resolveProjectionImpact(\n patch,\n operations.createReprojectProjectionImpact(patch.reprojectIds ?? [resolved.objectId]),\n )),\n });\n changed = result.documentChanged;\n } else {\n changed = operations.runPrefabStageAssetAction({\n actionId: 'prefab.node.setShadowMapExperiment',\n targetPrefabAssetId: resolved.prefabAssetId,\n nodeId: resolved.nodeId,\n value: input.behaviorProfile == null ? null : { behaviorProfile: input.behaviorProfile },\n });\n if (!changed) {\n return createLocalEditorCommandFailure(\n EDITOR_COMMAND_ID.SHADOW_MAP_EXPERIMENT_POLICY_SET,\n `Shadow Map profile action did not change prefab node: ${resolved.nodeId}`,\n { code: 'shadowMapExperiment.prefabPatchUnavailable', details: { prefabAssetId: resolved.prefabAssetId, nodeId: resolved.nodeId } },\n );\n }\n }\n if (changed) {\n const nextDocument = state.session.getState({ cloneDocuments: false }).workingDocument;\n state.summary = operations.summarizeDocument(nextDocument, state.session.getSource());\n state.status = `Agent set Shadow Map profiles for ${resolved.target.scope}`;\n operations.refreshShadowPreview?.();\n renderUi();\n }\n const nextResolved = resolveShadowMapExperimentTarget(\n EDITOR_COMMAND_ID.SHADOW_MAP_EXPERIMENT_POLICY_GET,\n state,\n resolved.target,\n operations,\n );\n if (!nextResolved.ok) return nextResolved.result;\n return {\n changed,\n policy: createShadowMapExperimentPolicyOutput(\n nextResolved.target,\n config,\n readShadowMapExperimentPlan(options, nextResolved.target.rawDocument),\n ),\n };\n}\n\nfunction createShadowPolicyGetOutput<TDocument>(\n resolved: ResolvedShadowTarget<TDocument>,\n canonicalPlan: EditorCommandShadowResolvedPlan | null = null,\n): EditorCommandShadowPolicyGetOutput {\n if (resolved.kind === 'scene') {\n const effective = resolveEditorSceneGameObjectShadowSettings(resolved.document, resolved.gameObject);\n return {\n target: resolved.target,\n ...(resolved.gameObject.shadow ? { policy: structuredClone(resolved.gameObject.shadow) as EditorCommandShadowSettings } : {}),\n effectivePolicy: (effective.settings ? structuredClone(effective.settings) : {}) as EditorCommandShadowSettings,\n plan: canonicalPlan ?? mapShadowPlan(resolveEditorShadowPlan({\n document: resolved.document,\n casterId: resolved.objectId,\n })),\n diagnostics: [\n ...mapShadowDiagnostics(effective.diagnostics),\n ...createShadowTargetDiagnostics(resolved),\n ],\n };\n }\n const policy = readPrefabNodeShadowPolicy(resolved.node);\n return {\n target: resolved.target,\n ...(policy ? { policy: structuredClone(policy) as EditorCommandShadowSettings } : {}),\n effectivePolicy: (policy ? structuredClone(policy) : {}) as EditorCommandShadowSettings,\n plan: mapShadowPlan(resolveEditorShadowPlan({\n document: resolved.document,\n casterId: resolved.nodeId,\n })),\n diagnostics: createShadowTargetDiagnostics(resolved),\n };\n}\n\nfunction createShadowDebugInspectOutput<TDocument, TPatch>(\n resolved: ResolvedShadowTarget<TDocument>,\n state: LocalEditorCommandHarnessState<TDocument, TPatch>,\n options: { receiverIds?: readonly unknown[]; projectionContext?: ShadowProjectionContext } = {},\n extraOptions?: {\n shadowPreviewDebugInfo?: LocalEditorCommandShadowPreviewDebugInfo | null;\n canonicalPlan?: EditorCommandShadowResolvedPlan | null;\n },\n): EditorCommandShadowDebugInspectOutput {\n const casterId = getResolvedTargetCasterId(resolved);\n const projectionContext = options.projectionContext ?? createIdentityShadowProjectionContext();\n const effectivePolicy = getResolvedTargetShadowPolicy(resolved);\n const receiverIds = normalizeEditorCommandIdList(options.receiverIds ?? []);\n const planInput: StrictEditorShadowResolvePlanInput = {\n document: resolved.document,\n casterId,\n explicitReceiverIds: receiverIds.length > 0 ? receiverIds : undefined,\n strictExplicitReceivers: receiverIds.length > 0,\n };\n const runtimeReceiverMeshCount = extraOptions?.shadowPreviewDebugInfo?.shadowMapExperiment?.receiverMeshCount ?? 0;\n const reconciledRuntimeReceiverMeshCount = receiverIds.length === 0 ? runtimeReceiverMeshCount : 0;\n const plan = extraOptions?.canonicalPlan ?? mapShadowPlan(\n resolveEditorShadowPlan(planInput),\n reconciledRuntimeReceiverMeshCount,\n );\n const allReceivers = mapShadowReceivers(\n collectEditorShadowReceiverCandidates({\n document: resolved.document,\n casterId,\n explicitReceiverIds: receiverIds.length > 0\n ? receiverIds\n : plan.receiverIds.length > 0\n ? plan.receiverIds\n : undefined,\n }),\n state,\n { casterId, lightId: plan.lightId, projectionContext },\n );\n const resolvedReceiverIds = new Set(plan.receiverIds);\n const receivers = receiverIds.length > 0 || extraOptions?.canonicalPlan\n ? allReceivers.filter(receiver => resolvedReceiverIds.has(receiver.receiverId))\n : allReceivers;\n const authoredPolicy = getResolvedTargetAuthoredPolicy(resolved);\n const light = createShadowLightSummary(resolved.document, plan.lightId);\n const runtimeEvidence = createShadowDebugRuntimeEvidence(\n plan,\n receivers,\n extraOptions?.shadowPreviewDebugInfo,\n createShadowRuntimeEvidenceCasterIds(resolved, casterId, projectionContext),\n );\n const diagnostics = [\n ...createShadowTargetDiagnostics(resolved),\n ...plan.diagnostics,\n ...(runtimeEvidence.diagnostics ?? []),\n ];\n return {\n target: resolved.target,\n caster: createShadowDebugTargetSummary(resolved, state, projectionContext),\n ...(authoredPolicy ? { policy: structuredClone(authoredPolicy) as EditorCommandShadowSettings } : {}),\n effectivePolicy: (effectivePolicy ? structuredClone(effectivePolicy) : {}) as EditorCommandShadowSettings,\n plan,\n ...(light ? { light } : {}),\n receivers,\n footprint: createShadowFootprintSummary(\n plan,\n receivers,\n state,\n projectionContext,\n light,\n reconciledRuntimeReceiverMeshCount,\n ),\n runtimeEvidence,\n ...(diagnostics.length ? { diagnostics } : {}),\n };\n}\n\nfunction enterShadowDebugContext<TDocument, TPatch>(\n state: LocalEditorCommandHarnessState<TDocument, TPatch>,\n renderUi: () => void,\n operations: LocalEditorCommandCapabilitySourceOperations<TDocument>,\n resolved: ResolvedShadowTarget<TDocument>,\n input: EditorCommandShadowDebugContextEnterInput,\n canonicalPlan: EditorCommandShadowResolvedPlan | null = null,\n): EditorCommandShadowDebugContextEnterOutput | ReturnType<typeof createLocalEditorCommandFailure> {\n const projectionContext = createShadowProjectionContext(resolved, operations);\n const receiverIds = normalizeEditorCommandIdList(input.receiverIds ?? []);\n const initialInspect = createShadowDebugInspectOutput(resolved, state, {\n receiverIds,\n projectionContext,\n }, {\n shadowPreviewDebugInfo: operations.getShadowPreviewDebugInfo?.() ?? null,\n canonicalPlan,\n });\n const targetId = getResolvedTargetCasterId(resolved);\n const logicalKeepIds = new Set<string>([targetId]);\n const protectedReceiverIds = initialInspect.plan.receiverIds.length > 0\n ? initialInspect.plan.receiverIds\n : initialInspect.receivers.map(receiver => receiver.receiverId);\n for (const receiverId of protectedReceiverIds) logicalKeepIds.add(receiverId);\n if (initialInspect.light?.lightId) logicalKeepIds.add(initialInspect.light.lightId);\n const ambientLightIds = input.includeAmbientLights === false\n ? []\n : collectShadowDebugAmbientLightIds(resolved.document, initialInspect.light?.lightId);\n for (const ambientId of ambientLightIds) logicalKeepIds.add(ambientId);\n\n const projectionKeepIds = new Set<string>();\n for (const id of logicalKeepIds) {\n const projectionId = projectionContext.resolveProjectionId(id);\n projectionKeepIds.add(projectionId);\n for (const parentId of state.projection?.getProjectionParentIds?.(projectionId) ?? []) {\n projectionKeepIds.add(parentId);\n }\n }\n const objectIds = state.projection?.getProjectedNodeIds?.() ?? [...projectionKeepIds];\n if (objectIds.length === 0) {\n return createLocalEditorCommandFailure(\n EDITOR_COMMAND_ID.SHADOW_DEBUG_CONTEXT_ENTER,\n 'Viewport projection is unavailable or has no projected objects for Shadow Debug Context.',\n { code: 'viewport.projectionUnavailable' },\n );\n }\n const nextOverrides: Record<string, boolean> = {};\n for (const objectId of objectIds) nextOverrides[objectId] = projectionKeepIds.has(objectId);\n const previous = JSON.stringify(state.previewVisibility);\n state.previewVisibility.overrides = nextOverrides;\n state.previewVisibility.isolatedObjectIds = [...projectionKeepIds];\n state.previewVisibility.protectedReceiverIds = [...new Set(protectedReceiverIds.flatMap(id => [\n id,\n projectionContext.resolveProjectionId(id),\n ]))];\n state.previewVisibility.protectedObjectIds = [...new Set([...state.previewVisibility.protectedReceiverIds, ...ambientLightIds.flatMap(id => [\n id,\n projectionContext.resolveProjectionId(id),\n ])])];\n state.previewVisibility.reason = normalizeEditorCommandString(input.reason)\n || `Shadow Debug Context for ${targetId}`;\n state.projection?.clearPreviewVisibilityOverrides?.();\n const entries = state.projection?.setPreviewVisibilityOverrides?.(nextOverrides) ?? [];\n operations.refreshShadowPreview?.();\n const inspect = createShadowDebugInspectOutput(resolved, state, {\n receiverIds,\n projectionContext,\n }, {\n shadowPreviewDebugInfo: operations.getShadowPreviewDebugInfo?.() ?? null,\n canonicalPlan,\n });\n const overlayItems = input.showOverlay === false\n ? []\n : createShadowDebugOverlayItems(inspect, {\n ...input,\n showCasterBounds: true,\n showReceiverBounds: true,\n showLightDirection: true,\n showFootprint: true,\n showArtifactBounds: true,\n });\n const overlayIds = overlayItems.length > 0\n ? operations.setShadowDebugOverlay?.(overlayItems)\n ?? state.projection?.setShadowDebugOverlay?.(overlayItems)\n ?? overlayItems.map(item => item.id)\n : [];\n const visibilityMeasure = createShadowDebugVisibilityMeasureOutput(inspect, input);\n const hiddenObjectIds = objectIds.filter(objectId => !projectionKeepIds.has(objectId));\n const diagnostics: EditorCommandDiagnostic[] = [\n ...(inspect.diagnostics ?? []),\n ...(!protectedReceiverIds.length ? [{\n severity: 'warning' as const,\n source: 'editor' as const,\n code: 'shadow.debugContextNoReceiver',\n message: 'Shadow Debug Context could not resolve a receiver to protect; screenshots may still be ambiguous.',\n details: { targetId },\n }] : []),\n ...(!initialInspect.light?.lightId && initialInspect.plan.backend !== 'none' ? [{\n severity: 'warning' as const,\n source: 'editor' as const,\n code: 'shadow.debugContextNoLight',\n message: 'Shadow Debug Context could not resolve a shadow light to preserve.',\n details: { backend: initialInspect.plan.backend, targetId },\n }] : []),\n ...(!ambientLightIds.length && input.includeAmbientLights !== false ? [{\n severity: 'info' as const,\n source: 'editor' as const,\n code: 'shadow.debugContextNoAmbientLight',\n message: 'No ambient/environment light was found to preserve for visual debugging.',\n }] : []),\n ];\n operations.requestSceneFrame('agent-shadow-debug-context-enter');\n renderUi();\n return {\n entered: previous !== JSON.stringify(state.previewVisibility) || overlayIds.length > 0,\n target: inspect.target,\n keptObjectIds: [...logicalKeepIds],\n hiddenObjectIds,\n protectedReceiverIds,\n lightIds: initialInspect.light?.lightId ? [initialInspect.light.lightId] : [],\n ambientLightIds,\n overlayIds,\n snapshot: createShadowDebugContextVisibilitySnapshot(state, entries, diagnostics),\n inspect,\n visibilityMeasure,\n ...(diagnostics.length ? { diagnostics } : {}),\n };\n}\n\nfunction clearShadowDebugContext<TDocument, TPatch>(\n state: LocalEditorCommandHarnessState<TDocument, TPatch>,\n renderUi: () => void,\n operations: LocalEditorCommandCapabilitySourceOperations<TDocument>,\n): EditorCommandShadowDebugContextClearOutput {\n const previousCount = Object.keys(state.previewVisibility.overrides).length;\n const hadIsolation = state.previewVisibility.isolatedObjectIds.length > 0;\n const hadProtection = (state.previewVisibility.protectedObjectIds?.length ?? 0) > 0\n || (state.previewVisibility.protectedReceiverIds?.length ?? 0) > 0;\n state.previewVisibility.overrides = {};\n state.previewVisibility.isolatedObjectIds = [];\n delete state.previewVisibility.protectedObjectIds;\n delete state.previewVisibility.protectedReceiverIds;\n delete state.previewVisibility.reason;\n state.projection?.clearPreviewVisibilityOverrides?.();\n operations.refreshShadowPreview?.();\n const overlayCleared = operations.clearShadowDebugOverlay?.()\n ?? state.projection?.clearShadowDebugOverlay?.()\n ?? false;\n const visibilityCleared = previousCount > 0 || hadIsolation || hadProtection;\n operations.requestSceneFrame('agent-shadow-debug-context-clear');\n renderUi();\n return {\n cleared: visibilityCleared || overlayCleared,\n overlayCleared,\n visibilityCleared,\n };\n}\n\nfunction createShadowDebugContextVisibilitySnapshot<TDocument, TPatch>(\n state: LocalEditorCommandHarnessState<TDocument, TPatch>,\n entries: readonly { nodeId: string; authoredActive: boolean; effectiveVisible: boolean }[],\n diagnostics: readonly EditorCommandDiagnostic[],\n): EditorCommandShadowDebugContextEnterOutput['snapshot'] {\n const entryById = new Map(entries.map(entry => [entry.nodeId, entry]));\n const objectIds = new Set<string>([\n ...Object.keys(state.previewVisibility.overrides),\n ...entries.map(entry => entry.nodeId),\n ...state.previewVisibility.isolatedObjectIds,\n ]);\n const isolatedIds = new Set(state.previewVisibility.isolatedObjectIds);\n return {\n isolated: isolatedIds.size > 0,\n isolatedObjectIds: [...isolatedIds],\n entries: [...objectIds].sort().map((objectId) => {\n const entry = entryById.get(objectId);\n const overrideVisible = state.previewVisibility.overrides[objectId];\n const authoredVisible = entry?.authoredActive ?? true;\n return {\n objectId,\n authoredVisible,\n previewVisible: entry?.effectiveVisible ?? (authoredVisible && overrideVisible !== false),\n ...(typeof overrideVisible === 'boolean' ? { overrideVisible } : {}),\n isolated: isolatedIds.has(objectId),\n ...(state.previewVisibility.protectedReceiverIds?.includes(objectId) ? {\n diagnostics: [{\n severity: 'info' as const,\n source: 'editor' as const,\n code: 'shadow.receiverProtectedInDebugContext',\n message: 'This receiver is protected by the active Shadow Debug Context and should remain visible for screenshot validation.',\n details: { objectId },\n }],\n } : {}),\n };\n }),\n ...(state.previewVisibility.reason ? { reason: state.previewVisibility.reason } : {}),\n ...(diagnostics.length ? { diagnostics: [...diagnostics] } : {}),\n };\n}\n\nfunction collectShadowDebugAmbientLightIds(document: EditorSceneDocument, shadowLightId?: string): string[] {\n const ids: string[] = [];\n const seen = new Set<string>();\n const gameObjects = Array.isArray(document.scene?.gameObjects) ? document.scene.gameObjects : [];\n for (const gameObject of gameObjects) {\n if (!isRecord(gameObject)) continue;\n const id = typeof gameObject.id === 'string' ? gameObject.id : '';\n if (!id || id === shadowLightId || seen.has(id)) continue;\n const name = typeof gameObject.name === 'string' ? gameObject.name : '';\n const light = isRecord(gameObject.light) ? gameObject.light : null;\n const lightType = typeof light?.type === 'string' ? light.type.toLowerCase() : '';\n const haystack = `${id} ${name}`.toLowerCase();\n const isAmbient = lightType === 'hemispheric'\n || lightType === 'ambient'\n || lightType === 'environment'\n || haystack.includes('environment_light')\n || haystack.includes('environment light')\n || haystack.includes('ambient');\n if (!isAmbient) continue;\n seen.add(id);\n ids.push(id);\n }\n return ids;\n}\n\nfunction createShadowDebugOverlayItems(\n inspect: EditorCommandShadowDebugInspectOutput,\n input: EditorCommandShadowDebugOverlaySetInput,\n): LocalEditorCommandShadowDebugOverlayItem[] {\n const items: LocalEditorCommandShadowDebugOverlayItem[] = [];\n const flags = readShadowDebugOverlayFlags(input);\n const receiverIds = new Set(normalizeEditorCommandIdList(input.receiverIds ?? []));\n const targetId = inspect.caster?.objectId ?? inspect.caster?.nodeId ?? 'target';\n const casterBounds = createOverlayBounds(inspect.caster?.bounds);\n if (flags.showCasterBounds && casterBounds) {\n items.push({\n id: `shadow-debug:caster:${targetId}`,\n kind: 'caster-bounds',\n bounds: casterBounds,\n });\n }\n const receivers = receiverIds.size\n ? inspect.receivers.filter(receiver => receiverIds.has(receiver.receiverId))\n : inspect.receivers;\n if (flags.showReceiverBounds) {\n for (const receiver of receivers) {\n const bounds = createOverlayBounds(receiver.bounds);\n if (!bounds) continue;\n items.push({\n id: `shadow-debug:receiver:${receiver.receiverId}`,\n kind: 'receiver-bounds',\n bounds,\n });\n items.push({\n id: `shadow-debug:receiver-surface:${receiver.receiverId}`,\n kind: 'receiver-surface',\n bounds,\n });\n }\n }\n if (flags.showFootprint && inspect.footprint.center && inspect.footprint.size) {\n items.push({\n id: `shadow-debug:footprint:${inspect.footprint.receiverId ?? targetId}`,\n kind: 'footprint',\n center: { ...inspect.footprint.center },\n size: {\n x: Math.max(inspect.footprint.size.x, 0.01),\n y: Math.max(inspect.footprint.size.y, 0.015),\n z: Math.max(inspect.footprint.size.z, 0.01),\n },\n });\n }\n if (flags.showLightDirection) {\n const lightDirection = inspect.light?.direction ?? inspect.footprint.normal;\n const center = inspect.footprint.center ?? casterBounds?.center;\n const size = inspect.footprint.size ?? casterBounds?.size ?? { x: 2, y: 2, z: 2 };\n if (center && lightDirection) {\n items.push({\n id: `shadow-debug:light:${inspect.light?.lightId ?? targetId}`,\n kind: 'light-direction',\n center: { ...center },\n size: { ...size },\n direction: { ...lightDirection },\n });\n }\n }\n if (flags.showArtifactBounds && inspect.footprint.kind === 'artifact') {\n const artifactBounds = inspect.footprint.center && inspect.footprint.size\n ? createOverlayBoundsFromCenterSize(inspect.footprint.center, inspect.footprint.size)\n : undefined;\n if (artifactBounds) {\n items.push({\n id: `shadow-debug:artifact:${targetId}`,\n kind: 'artifact-bounds',\n bounds: artifactBounds,\n });\n }\n }\n return items;\n}\n\nfunction createShadowDebugVisibilityMeasureOutput(\n inspect: EditorCommandShadowDebugInspectOutput,\n input: EditorCommandShadowDebugVisibilityMeasureInput,\n): EditorCommandShadowDebugVisibilityMeasureOutput {\n const diagnostics: EditorCommandDiagnostic[] = [\n ...(inspect.diagnostics ?? []),\n {\n severity: 'info',\n source: 'editor',\n code: 'shadow.pixelReadbackUnavailable',\n message: 'Pixel readback is not available in this renderer attachment, so shadow visibility is measured structurally from policy, receivers, footprint, and runtime evidence.',\n },\n ];\n const requestedReceiverIds = normalizeEditorCommandIdList(input.receiverIds ?? []);\n const renderableCount = inspect.runtimeEvidence.renderableShadowPrimitiveCount ?? 0;\n let visibleScore = 0;\n let coverage = 0;\n const opacity = clamp01(readNumber(inspect.plan.params.opacity, 0.42));\n const casterInactive = inspect.caster?.active === false || inspect.caster?.visible === false;\n const lightRequired = inspect.plan.backend === 'dynamic-map' || inspect.plan.backend === 'static-baked' || inspect.plan.backend === 'projected';\n const lightMissing = lightRequired && !inspect.light?.lightId;\n const missingCasterBounds = !inspect.caster?.bounds;\n const plannedReceivers = inspect.receivers.filter(receiver => inspect.plan.receiverIds.includes(receiver.receiverId));\n const visiblePlannedReceivers = plannedReceivers.filter(receiver => isShadowReceiverUsableForVisibility(receiver));\n const selectedReceiver = selectShadowFootprintReceiver(inspect.plan, plannedReceivers);\n const missingReceiverBounds = inspect.plan.receiverIds.length > 0\n && inspect.plan.receiverIds.some(receiverId => !plannedReceivers.some(receiver => receiver.receiverId === receiverId && !!receiver.bounds));\n const hiddenReceiverIds = plannedReceivers\n .filter(receiver => receiver.active === false || receiver.visible === false)\n .map(receiver => receiver.receiverId);\n const ignoredHiddenReceiverIds = hiddenReceiverIds.filter(receiverId => receiverId !== selectedReceiver?.receiverId);\n if (inspect.plan.backend === 'none' || inspect.plan.mode === 'none') {\n diagnostics.push({\n severity: 'info',\n source: 'editor',\n code: 'shadow.visibilityPolicyNone',\n message: 'Resolved Shadow V2 policy is none, so no visible shadow is expected.',\n details: { backend: inspect.plan.backend, mode: inspect.plan.mode },\n });\n } else if (opacity <= 0.001) {\n diagnostics.push({\n severity: 'warning',\n source: 'editor',\n code: 'shadow.visibilityOpacityZero',\n message: 'Resolved Shadow V2 opacity is zero, so no visible shadow is expected.',\n details: { opacity },\n });\n } else if (casterInactive) {\n diagnostics.push({\n severity: 'warning',\n source: 'editor',\n code: 'shadow.visibilityCasterInactive',\n message: 'The resolved caster is inactive or hidden, so no visible shadow is expected.',\n details: { active: inspect.caster?.active, visible: inspect.caster?.visible },\n });\n } else if (lightMissing) {\n diagnostics.push({\n severity: 'warning',\n source: 'editor',\n code: 'shadow.visibilityLightMissing',\n message: 'The resolved shadow backend requires a light, but no usable shadow light was resolved.',\n details: { backend: inspect.plan.backend, lightId: inspect.plan.lightId },\n });\n } else if (missingCasterBounds || missingReceiverBounds) {\n diagnostics.push({\n severity: 'warning',\n source: 'editor',\n code: 'shadow.visibilityBoundsUnavailable',\n message: 'Caster or receiver projection bounds are unavailable, so structural visibility cannot confirm a visible shadow.',\n details: { missingCasterBounds, missingReceiverBounds, receiverIds: inspect.plan.receiverIds },\n });\n } else if (visiblePlannedReceivers.length === 0 && hiddenReceiverIds.length > 0) {\n diagnostics.push({\n severity: 'warning',\n source: 'editor',\n code: 'shadow.visibilityReceiverInactive',\n message: 'One or more resolved receivers are inactive or hidden in the current preview, so structural visibility cannot confirm a visible shadow.',\n details: { receiverIds: hiddenReceiverIds },\n });\n } else if (inspect.receivers.length === 0 || inspect.plan.receiverIds.length === 0) {\n diagnostics.push({\n severity: 'warning',\n source: 'editor',\n code: 'shadow.visibilityNoReceiver',\n message: 'Resolved Shadow V2 plan has no receiver, so a visible shadow is unlikely.',\n details: { receiverIds: inspect.plan.receiverIds, requestedReceiverIds },\n });\n } else if (renderableCount <= 0) {\n diagnostics.push({\n severity: 'warning',\n source: 'editor',\n code: 'shadow.visibilityNoRuntimePrimitive',\n message: 'Resolved Shadow V2 plan has receivers but no renderable shadow primitive evidence.',\n details: { backend: inspect.plan.backend, renderableShadowPrimitiveCount: renderableCount },\n });\n } else {\n if (ignoredHiddenReceiverIds.length > 0) {\n diagnostics.push({\n severity: 'info',\n source: 'editor',\n code: 'shadow.visibilityIgnoredHiddenReceiver',\n message: 'Some resolved receivers are hidden in the current preview; structural visibility used the best visible receiver instead.',\n details: {\n receiverIds: ignoredHiddenReceiverIds,\n selectedReceiverId: selectedReceiver?.receiverId,\n },\n });\n }\n const footprintConfidence = clamp01(readNumber(inspect.footprint.confidence, 0.5));\n const receiverCoverage = clamp01((visiblePlannedReceivers.length > 0 ? visiblePlannedReceivers : plannedReceivers).reduce((max, receiver) => {\n const overlap = receiver.suitability?.overlap;\n return Math.max(max, typeof overlap === 'number' ? overlap : 0);\n }, 0));\n if (receiverCoverage <= 0.01) {\n diagnostics.push({\n severity: 'warning',\n source: 'editor',\n code: 'shadow.visibilityReceiverCoverageTooLow',\n message: 'Resolved receivers have no meaningful X/Z overlap with the caster, so structural visibility cannot confirm a visible shadow.',\n details: { coverage: receiverCoverage, receiverIds: inspect.plan.receiverIds },\n });\n } else {\n const backendFactor = inspect.plan.backend === 'dynamic-map'\n ? 0.9\n : inspect.plan.backend === 'static-baked'\n ? inspect.plan.stale === true ? 0.35 : 0.85\n : inspect.plan.backend === 'blob' || inspect.plan.backend === 'projected'\n ? 0.75\n : 0.5;\n coverage = clamp01(Math.max(receiverCoverage, footprintConfidence * 0.65));\n visibleScore = clamp01((0.2 + opacity * 0.35 + coverage * 0.3 + backendFactor * 0.15) * (renderableCount > 0 ? 1 : 0));\n if (inspect.plan.stale === true || inspect.runtimeEvidence.artifactStale === true) {\n visibleScore = Math.min(visibleScore, 0.35);\n diagnostics.push({\n severity: 'warning',\n source: 'editor',\n code: 'shadow.visibilityStaticStale',\n message: 'Static shadow evidence is stale; treat visibility as low confidence until rebaked.',\n });\n }\n }\n }\n return {\n target: inspect.target,\n visible: visibleScore >= 0.45,\n visibleScore,\n coverage,\n renderableShadowPrimitiveCount: renderableCount,\n measurementKind: 'structural',\n diagnostics,\n };\n}\n\nfunction isShadowReceiverUsableForVisibility(receiver: EditorCommandShadowReceiverCandidate): boolean {\n return receiver.active !== false && receiver.visible !== false && !!receiver.bounds;\n}\n\nfunction readNumber(value: unknown, fallback: number): number {\n return typeof value === 'number' && Number.isFinite(value) ? value : fallback;\n}\n\nfunction clamp01(value: number): number {\n return Math.max(0, Math.min(1, value));\n}\n\nfunction readShadowDebugOverlayFlags(input: EditorCommandShadowDebugOverlaySetInput): {\n showCasterBounds: boolean;\n showReceiverBounds: boolean;\n showLightDirection: boolean;\n showFootprint: boolean;\n showArtifactBounds: boolean;\n} {\n const explicit = input.showCasterBounds !== undefined\n || input.showReceiverBounds !== undefined\n || input.showLightDirection !== undefined\n || input.showFootprint !== undefined\n || input.showArtifactBounds !== undefined;\n return {\n showCasterBounds: explicit ? input.showCasterBounds === true : true,\n showReceiverBounds: explicit ? input.showReceiverBounds === true : true,\n showLightDirection: explicit ? input.showLightDirection === true : true,\n showFootprint: explicit ? input.showFootprint === true : true,\n showArtifactBounds: explicit ? input.showArtifactBounds === true : true,\n };\n}\n\nfunction createOverlayBounds(bounds: EditorCommandBounds | undefined): LocalEditorCommandShadowDebugOverlayItem['bounds'] | undefined {\n if (!bounds?.center || !bounds.size) return undefined;\n const min = bounds.min ?? {\n x: bounds.center.x - bounds.size.x / 2,\n y: bounds.center.y - bounds.size.y / 2,\n z: bounds.center.z - bounds.size.z / 2,\n };\n const max = bounds.max ?? {\n x: bounds.center.x + bounds.size.x / 2,\n y: bounds.center.y + bounds.size.y / 2,\n z: bounds.center.z + bounds.size.z / 2,\n };\n return {\n min: { ...min },\n max: { ...max },\n size: { ...bounds.size },\n center: { ...bounds.center },\n };\n}\n\nfunction createOverlayBoundsFromCenterSize(\n center: { x: number; y: number; z: number },\n size: { x: number; y: number; z: number },\n): LocalEditorCommandShadowDebugOverlayItem['bounds'] {\n return {\n center: { ...center },\n size: { ...size },\n min: {\n x: center.x - size.x / 2,\n y: center.y - size.y / 2,\n z: center.z - size.z / 2,\n },\n max: {\n x: center.x + size.x / 2,\n y: center.y + size.y / 2,\n z: center.z + size.z / 2,\n },\n };\n}\n\nfunction setSceneShadowPolicy<TDocument, TPatch, TAsset>(\n state: LocalEditorCommandHarnessState<TDocument, TPatch>,\n options: LocalEditorHarnessOptions<TDocument, TPatch, TAsset>,\n renderUi: () => void,\n operations: LocalEditorCommandCapabilitySourceOperations<TDocument>,\n resolved: Extract<ResolvedShadowTarget<TDocument>, { kind: 'scene' }>,\n policy: EditorShadowSettings | undefined,\n): EditorCommandShadowPolicySetOutput | ReturnType<typeof createLocalEditorCommandFailure> {\n if (!state.session) {\n return createLocalEditorCommandFailure(\n EDITOR_COMMAND_ID.SHADOW_POLICY_SET,\n 'Editor is not in edit mode.',\n { code: 'editor.notReady', objectId: resolved.objectId },\n );\n }\n let changed = false;\n let workingDocument = resolved.rawDocument;\n for (const { path, value } of createShadowPolicyFieldPatches(policy)) {\n const patch = options.documentAdapter.createSerializedPropertyPatch({\n document: workingDocument,\n targetId: resolved.objectId,\n path,\n value,\n commitMode: 'change',\n persistence: 'document',\n source: 'custom',\n });\n if (!patch) continue;\n const result = state.session.dispatch({\n type: 'document.patch',\n label: patch.label ?? `Agent set shadow ${path}`,\n patch: patch.patch,\n targetId: resolved.objectId,\n ...operations.withProjectionImpact(operations.resolveProjectionImpact(\n patch,\n operations.createReprojectProjectionImpact(patch.reprojectIds ?? [patch.changedId ?? resolved.objectId]),\n )),\n });\n workingDocument = result.workingDocument;\n if (result.documentChanged) changed = true;\n }\n if (!changed) {\n const output = createShadowPolicyGetOutput(resolved);\n return {\n target: output.target,\n changed: false,\n ...(output.policy ? { policy: output.policy } : {}),\n effectivePolicy: output.effectivePolicy,\n plan: output.plan,\n diagnostics: output.diagnostics,\n };\n }\n operations.reprojectProjectionForChangedIds(workingDocument, [resolved.objectId]);\n state.summary = operations.summarizeDocument(workingDocument, state.session.getSource());\n state.status = `Agent set shadow policy ${resolved.objectId}`;\n renderUi();\n const nextDocument = asEditorSceneDocument(workingDocument);\n const nextObject = nextDocument ? findShadowGameObject(nextDocument, resolved.objectId) : null;\n if (!nextDocument || !nextObject) {\n return createLocalEditorCommandFailure(\n EDITOR_COMMAND_ID.SHADOW_POLICY_SET,\n `Shadow target disappeared after patch: ${resolved.objectId}`,\n { code: 'shadow.targetMissing', objectId: resolved.objectId },\n );\n }\n const output = createShadowPolicyGetOutput({\n kind: 'scene',\n target: resolved.target,\n document: nextDocument,\n rawDocument: workingDocument,\n objectId: resolved.objectId,\n gameObject: nextObject,\n });\n return {\n target: output.target,\n changed: true,\n ...(output.policy ? { policy: output.policy } : {}),\n effectivePolicy: output.effectivePolicy,\n plan: output.plan,\n diagnostics: output.diagnostics,\n };\n}\n\nfunction setPrefabStageShadowPolicy<TDocument>(\n renderUi: () => void,\n operations: LocalEditorCommandCapabilitySourceOperations<TDocument>,\n resolved: Extract<ResolvedShadowTarget<TDocument>, { kind: 'prefab-stage' }>,\n policy: EditorShadowSettings | undefined,\n): EditorCommandShadowPolicySetOutput | ReturnType<typeof createLocalEditorCommandFailure> {\n const changed = resolved.nodeId === resolved.rootNodeId\n ? setPrefabRootShadowPolicy(operations, resolved.details, policy)\n : operations.runPrefabStageAssetAction({\n actionId: 'prefab.node.setShadow',\n targetPrefabAssetId: resolved.details.stage.assetId,\n nodeId: resolved.nodeId,\n value: policy ?? null,\n });\n if (!changed) {\n return createLocalEditorCommandFailure(\n EDITOR_COMMAND_ID.SHADOW_POLICY_SET,\n `Shadow policy action did not change prefab node: ${resolved.nodeId}`,\n { code: 'shadow.policyUnchanged', details: { assetId: resolved.details.stage.assetId, nodeId: resolved.nodeId } },\n );\n }\n renderUi();\n const nextDetails = operations.getPrefabStageDetails() ?? resolved.details;\n const nextResolved = resolvePrefabShadowTargetFromDetails(nextDetails, {\n nodeId: resolved.nodeId,\n assetId: resolved.details.stage.assetId,\n }, operations);\n const output = createShadowPolicyGetOutput(nextResolved ?? resolved);\n return {\n target: output.target,\n changed: true,\n ...(output.policy ? { policy: output.policy } : {}),\n effectivePolicy: output.effectivePolicy,\n plan: output.plan,\n diagnostics: output.diagnostics,\n };\n}\n\nfunction setPrefabRootShadowPolicy<TDocument>(\n operations: LocalEditorCommandCapabilitySourceOperations<TDocument>,\n details: LocalEditorCommandPrefabStageDetails<TDocument>,\n policy: EditorShadowSettings | undefined,\n): boolean {\n let changed = false;\n for (const { path, value } of createShadowPolicyFieldPatches(policy)) {\n const patched = operations.runPrefabStageAssetAction({\n actionId: 'asset.edit-prefab-field',\n assetId: details.stage.assetId,\n browserAssetId: details.stage.browserAssetId,\n assetKind: 'prefab',\n targetPrefabAssetId: details.stage.assetId,\n fieldPath: `prefab.defaults.${path}`,\n value,\n });\n if (patched) changed = true;\n }\n return changed;\n}\n\nfunction createShadowProjectionContext<TDocument>(\n resolved: ResolvedShadowTarget<TDocument>,\n operations: LocalEditorCommandCapabilitySourceOperations<TDocument>,\n): ShadowProjectionContext {\n if (resolved.kind !== 'prefab-stage') return createIdentityShadowProjectionContext();\n return {\n resolveProjectionId: targetId => operations.resolvePrefabStageProjectionNodeId?.(targetId) ?? targetId,\n };\n}\n\nfunction createIdentityShadowProjectionContext(): ShadowProjectionContext {\n return {\n resolveProjectionId: targetId => targetId,\n };\n}\n\nfunction resolveShadowTarget<TDocument, TPatch>(\n capabilityId: string,\n state: LocalEditorCommandHarnessState<TDocument, TPatch>,\n input: EditorCommandShadowTarget | EditorCommandShadowReceiversListInput,\n operations: LocalEditorCommandCapabilitySourceOperations<TDocument>,\n): { ok: true; target: ResolvedShadowTarget<TDocument> } | { ok: false; result: ReturnType<typeof createLocalEditorCommandFailure> } {\n if (state.mode !== 'editor' || !state.session) {\n return {\n ok: false,\n result: createLocalEditorCommandFailure(capabilityId, 'Editor is not in edit mode.', { code: 'editor.notReady' }),\n };\n }\n const sessionState = state.session.getState({ cloneDocuments: false });\n const document = asEditorSceneDocument(sessionState.workingDocument);\n const objectId = normalizeEditorCommandString(input.objectId);\n if (objectId) {\n if (!document) {\n return {\n ok: false,\n result: createLocalEditorCommandFailure(capabilityId, 'Shadow capabilities require an editor scene document.', {\n code: 'shadow.unsupportedDocument',\n details: { objectId },\n }),\n };\n }\n if (!isEditorCommandSafeSceneObjectId(operations, objectId)) {\n return {\n ok: false,\n result: createLocalEditorCommandFailure(capabilityId, `Shadow target object is unavailable in the safe Scene Hierarchy projection: ${objectId}`, {\n code: 'shadow.targetNotFound',\n objectId,\n }),\n };\n }\n const gameObject = findShadowGameObject(document, objectId);\n if (!gameObject) {\n return {\n ok: false,\n result: createLocalEditorCommandFailure(capabilityId, `Shadow target object not found: ${objectId}`, {\n code: 'shadow.targetNotFound',\n objectId,\n }),\n };\n }\n return {\n ok: true,\n target: {\n kind: 'scene',\n target: { objectId },\n document,\n rawDocument: sessionState.workingDocument,\n objectId,\n gameObject,\n },\n };\n }\n const details = operations.getPrefabStageDetails();\n if (details) {\n if (!hasActivePrefabHierarchyScope(operations, details)) {\n return {\n ok: false,\n result: createLocalEditorCommandFailure(capabilityId, 'Open Prefab stage does not own the active Hierarchy authority.', {\n code: 'shadow.scopeMismatch',\n details: { prefabAssetId: details.stage.assetId },\n }),\n };\n }\n const prefabTarget = resolvePrefabShadowTargetFromDetails(details, input, operations);\n if (prefabTarget) return { ok: true, target: prefabTarget };\n }\n const activeId = normalizeEditorCommandString(getEditorCommandSafeSceneSelection(operations).activeId);\n if (activeId && document) {\n const gameObject = findShadowGameObject(document, activeId);\n if (gameObject) {\n return {\n ok: true,\n target: {\n kind: 'scene',\n target: { objectId: activeId },\n document,\n rawDocument: sessionState.workingDocument,\n objectId: activeId,\n gameObject,\n },\n };\n }\n }\n return {\n ok: false,\n result: createLocalEditorCommandFailure(capabilityId, 'Shadow target is required. Provide objectId, or open a Prefab stage and provide nodeId/assetId.', {\n code: 'shadow.targetRequired',\n details: { objectId: input.objectId, nodeId: input.nodeId, assetId: 'assetId' in input ? input.assetId : undefined },\n }),\n };\n}\n\nfunction resolvePrefabShadowTargetFromDetails<TDocument>(\n details: LocalEditorCommandPrefabStageDetails<TDocument>,\n input: EditorCommandShadowTarget | EditorCommandShadowReceiversListInput,\n operations: LocalEditorCommandCapabilitySourceOperations<TDocument>,\n): Extract<ResolvedShadowTarget<TDocument>, { kind: 'prefab-stage' }> | null {\n const requestedAssetId = 'assetId' in input ? normalizeEditorCommandString(input.assetId) : '';\n if (requestedAssetId && requestedAssetId !== details.stage.assetId && requestedAssetId !== details.stage.browserAssetId) return null;\n const model = operations.getHierarchyReadModel();\n if (!hasActivePrefabHierarchyScope(operations, details, model)) return null;\n const safeModel = createEditorCommandSafePrefabReadModel(model, details.nodeDetails);\n const nodes = listPrefabShadowNodes(safeModel);\n const nodeId = resolveSafePrefabNodeAuthoredId(\n safeModel,\n normalizePrefabNodeId(input.nodeId),\n );\n const node = nodes.find(candidate => candidate.id === nodeId) ?? null;\n if (!node) return null;\n const rootNodeId = safeModel.nodes.find(candidate => candidate.role === 'root')?.nodeId\n ?? safeModel.nodes.find(candidate => candidate.parentNodeId === null)?.nodeId\n ?? node.id;\n const document = createPrefabStageShadowDocument(details, nodes);\n return {\n kind: 'prefab-stage',\n target: { assetId: details.stage.assetId, nodeId: node.id },\n details,\n nodeId: node.id,\n rootNodeId,\n node,\n document,\n };\n}\n\nfunction resolveSafePrefabNodeAuthoredId(\n safeModel: LocalEditorCommandSafePrefabReadModel,\n requestedNodeId: string,\n): string | null {\n if (requestedNodeId) {\n return safeModel.nodes.find(node => (\n node.nodeId === requestedNodeId || node.rowId === requestedNodeId\n ))?.nodeId ?? null;\n }\n if (safeModel.activeNodeId) return safeModel.activeNodeId;\n return safeModel.nodes.find(node => node.role === 'root')?.nodeId\n ?? safeModel.nodes.find(node => node.parentNodeId === null)?.nodeId\n ?? null;\n}\n\nfunction hasActivePrefabHierarchyScope<TDocument>(\n operations: Pick<LocalEditorCommandCapabilitySourceOperations<TDocument>, 'getHierarchyReadModel'>,\n details: LocalEditorCommandPrefabStageDetails<TDocument>,\n model = operations.getHierarchyReadModel(),\n): boolean {\n return model.snapshot.scopeType === 'prefab-stage'\n && model.snapshot.scopeKey === `prefab-stage:${details.stage.assetId}`;\n}\n\nfunction createPrefabStageShadowDocument<TDocument>(\n details: LocalEditorCommandPrefabStageDetails<TDocument>,\n nodes: readonly PrefabShadowNode[],\n): EditorSceneDocument {\n return {\n version: 1,\n schemaVersion: 1,\n assets: [],\n scene: {\n gameObjects: nodes.map((node) => ({\n id: node.id,\n name: node.label,\n parentId: node.parentId ?? undefined,\n active: readBoolean(node.defaults?.active, true),\n kind: node.kind === 'primitive' ? 'primitive' : 'transform',\n ...(node.defaults?.shadow ? { shadow: structuredClone(node.defaults.shadow) as EditorShadowSettings } : {}),\n ...(node.primitive ? { primitive: structuredClone(node.primitive) as any } : {}),\n ...(node.light ? { light: structuredClone(node.light) as any } : {}),\n components: [],\n })),\n },\n metadata: {\n prefabStageAssetId: details.stage.assetId,\n },\n } as unknown as EditorSceneDocument;\n}\n\nfunction listPrefabShadowNodes(\n safeModel: LocalEditorCommandSafePrefabReadModel,\n): PrefabShadowNode[] {\n return safeModel.nodes.map(node => ({\n id: node.nodeId,\n label: node.label,\n kind: node.details?.kind ?? node.role ?? 'group',\n parentId: node.parentNodeId,\n ...(isRecord(node.details?.defaults) ? { defaults: structuredClone(node.details.defaults) } : {}),\n ...(isRecord(node.details?.primitive) ? { primitive: structuredClone(node.details.primitive) } : {}),\n ...(isRecord(node.details?.light) ? { light: structuredClone(node.details.light) } : {}),\n }));\n}\n\nfunction createShadowPolicyFieldPatches(policy: EditorShadowSettings | undefined): Array<{ path: ShadowPolicyFieldPath; value: unknown }> {\n const record = (policy ?? {}) as Record<string, any>;\n return SHADOW_POLICY_FIELDS.map(path => ({\n path,\n value: readShadowPolicyFieldValue(record, path) ?? null,\n }));\n}\n\nfunction readShadowPolicyFieldValue(policy: Record<string, any>, path: ShadowPolicyFieldPath): unknown {\n if (path === 'shadow.cast') return policy.cast;\n if (path === 'shadow.receive') return policy.receive;\n if (path === 'shadow.mode') return policy.mode;\n if (path === 'shadow.quality') return policy.quality;\n if (path === 'shadow.light.mode') return policy.light?.mode;\n if (path === 'shadow.light.lightId') return policy.light?.lightId;\n const param = path.slice('shadow.params.'.length) as keyof NonNullable<EditorShadowSettings['params']>;\n return policy.params?.[param];\n}\n\nfunction normalizeShadowPolicy(value: unknown): { ok: true; settings?: EditorShadowSettings } | { ok: false; message: string } {\n if (!isRecord(value)) return { ok: false, message: 'shadow policy must be an object.' };\n if (Object.keys(value).length === 0) return { ok: true, settings: undefined };\n try {\n assertEditorShadowSettingsContract(value, '$.policy');\n } catch (error) {\n return { ok: false, message: error instanceof Error ? error.message : String(error) };\n }\n const settings = readEditorShadowSettings(value);\n if (!settings) return { ok: false, message: 'shadow policy did not contain any valid Shadow V2 fields.' };\n return { ok: true, settings };\n}\n\nfunction readPrefabNodeShadowPolicy(node: PrefabShadowNode): EditorShadowSettings | undefined {\n return readEditorShadowSettings(node.defaults?.shadow);\n}\n\nfunction createRenderingActionDiagnosticDetails(\n result: {\n ok: boolean;\n changed: boolean;\n rendered: boolean;\n status?: string;\n statusTone?: string;\n statusDetails?: string;\n details?: Record<string, unknown>;\n error?: string;\n },\n): EditorCommandJsonObject {\n return {\n ok: result.ok,\n changed: result.changed,\n rendered: result.rendered,\n ...(result.status ? { status: result.status } : {}),\n ...(result.statusTone ? { statusTone: result.statusTone } : {}),\n ...(result.statusDetails ? { statusDetails: result.statusDetails } : {}),\n ...(isRecord(result.details) ? { actionDetails: result.details as EditorCommandJsonObject } : {}),\n ...(result.error ? { error: result.error } : {}),\n };\n}\n\nfunction createStaticBakeDiagnostic(\n result: {\n ok: boolean;\n changed: boolean;\n rendered: boolean;\n status?: string;\n statusTone?: string;\n statusDetails?: string;\n details?: Record<string, unknown>;\n error?: string;\n },\n targetConfirmed: boolean,\n sourceNodeIds: readonly string[] | null,\n): EditorCommandDiagnostic {\n if (result.ok === true && result.changed === true && targetConfirmed) {\n return {\n severity: 'info',\n source: 'editor',\n code: 'shadow.staticBakeCompleted',\n message: 'Static shadow bake rendering action completed and included the requested caster.',\n details: createRenderingActionDiagnosticDetails(result),\n };\n }\n if (result.ok === true && result.changed === true && sourceNodeIds !== null) {\n return {\n severity: 'warning',\n source: 'editor',\n code: 'shadow.staticBakeTargetNotFound',\n message: 'Static shadow bake produced an artifact, but the requested caster was not included in the baked source nodes.',\n details: createRenderingActionDiagnosticDetails(result),\n };\n }\n if (result.ok === true && result.changed === true) {\n return {\n severity: 'warning',\n source: 'editor',\n code: 'shadow.staticBakeTargetUnknown',\n message: 'Static shadow bake produced an artifact, but the rendering action did not report target source nodes.',\n details: createRenderingActionDiagnosticDetails(result),\n };\n }\n return {\n severity: 'warning',\n source: 'editor',\n code: 'shadow.staticBakeNoChange',\n message: result.ok === false\n ? 'Static shadow bake rendering action did not complete successfully.'\n : 'Static shadow bake rendering action completed without producing a changed artifact.',\n details: createRenderingActionDiagnosticDetails(result),\n };\n}\n\nfunction readRenderingActionStaticBakeSourceNodeIds(result: { details?: Record<string, unknown> }): string[] | null {\n if (!isRecord(result.details)) return null;\n const details = result.details;\n if (!Object.prototype.hasOwnProperty.call(details, 'sourceNodeIds')) return null;\n return normalizeEditorCommandIdList(readRenderingActionStringList(details.sourceNodeIds));\n}\n\nfunction readRenderingActionStringList(value: unknown): string[] {\n return Array.isArray(value) ? value.filter((item): item is string => typeof item === 'string') : [];\n}\n\nfunction getResolvedTargetShadowPolicy<TDocument>(target: ResolvedShadowTarget<TDocument>): EditorShadowSettings | undefined {\n if (target.kind === 'scene') {\n return resolveEditorSceneGameObjectShadowSettings(target.document, target.gameObject).settings;\n }\n return readPrefabNodeShadowPolicy(target.node);\n}\n\nfunction getResolvedTargetAuthoredPolicy<TDocument>(target: ResolvedShadowTarget<TDocument>): EditorShadowSettings | undefined {\n return target.kind === 'scene'\n ? readEditorShadowSettings(target.gameObject.shadow)\n : readPrefabNodeShadowPolicy(target.node);\n}\n\nfunction createShadowDebugRuntimeEvidence(\n plan: EditorCommandShadowResolvedPlan,\n receivers: readonly EditorCommandShadowReceiverCandidate[],\n shadowPreviewDebugInfo: LocalEditorCommandShadowPreviewDebugInfo | null | undefined,\n casterIds: ReadonlySet<string>,\n): EditorCommandShadowRuntimeEvidence {\n const diagnostics: EditorCommandDiagnostic[] = [];\n if (plan.backend === 'none') {\n diagnostics.push({\n severity: 'info',\n source: 'editor',\n code: 'shadow.runtimeBackendNone',\n message: 'Resolved backend is none, so no runtime shadow primitive is expected.',\n });\n }\n const experimentReceiverMeshCount = shadowPreviewDebugInfo?.shadowMapExperiment?.receiverMeshCount ?? 0;\n if (plan.backend !== 'none' && receivers.length === 0 && experimentReceiverMeshCount === 0) {\n diagnostics.push({\n severity: 'warning',\n source: 'editor',\n code: 'shadow.runtimeNoReceivers',\n message: 'Resolved shadow backend requires receivers, but no receiver candidates are available.',\n });\n }\n if (plan.backend === 'static-baked') {\n diagnostics.push({\n severity: 'warning',\n source: 'editor',\n code: 'shadow.staticArtifactEvidenceUnavailable',\n message: 'Static-baked shadow visibility requires a baked artifact; this renderer attachment does not expose artifact presence evidence to shadow.debug.visibilityMeasure.',\n });\n }\n return {\n backend: plan.backend,\n renderableShadowPrimitiveCount: plan.backend === 'none' || plan.backend === 'static-baked'\n ? 0\n : receivers.filter(receiver => receiver.active !== false && receiver.visible !== false).length,\n casterRuntimeObjectCount: plan.backend === 'none' ? 0 : 1,\n receiverRuntimeObjectCount: Math.max(receivers.length, experimentReceiverMeshCount),\n ...(shadowPreviewDebugInfo?.shadowMapExperiment\n ? {\n shadowMapExperiment: {\n ...shadowPreviewDebugInfo.shadowMapExperiment,\n mapResolutions: shadowPreviewDebugInfo.shadowMapExperiment.mapResolutions\n ? { ...shadowPreviewDebugInfo.shadowMapExperiment.mapResolutions }\n : null,\n configuredMapResolutions: shadowPreviewDebugInfo.shadowMapExperiment.configuredMapResolutions\n ? { ...shadowPreviewDebugInfo.shadowMapExperiment.configuredMapResolutions }\n : null,\n diagnosticThresholds: shadowPreviewDebugInfo.shadowMapExperiment.diagnosticThresholds\n ? { ...shadowPreviewDebugInfo.shadowMapExperiment.diagnosticThresholds }\n : null,\n activity: {\n ...shadowPreviewDebugInfo.shadowMapExperiment.activity,\n activeActivityKindCounts: { ...shadowPreviewDebugInfo.shadowMapExperiment.activity.activeActivityKindCounts },\n pendingDirtyReasons: [...shadowPreviewDebugInfo.shadowMapExperiment.activity.pendingDirtyReasons],\n untrackedDynamicCasterEntityIds: [...shadowPreviewDebugInfo.shadowMapExperiment.activity.untrackedDynamicCasterEntityIds],\n sources: shadowPreviewDebugInfo.shadowMapExperiment.activity.sources.map(entry => structuredClone(entry)),\n },\n runtime: {\n ...shadowPreviewDebugInfo.shadowMapExperiment.runtime,\n registrations: shadowPreviewDebugInfo.shadowMapExperiment.runtime.registrations.map(entry => ({\n ...entry,\n renderableIds: [...entry.renderableIds],\n activitySourceIds: [...entry.activitySourceIds],\n })),\n },\n lastRefreshReasons: [...shadowPreviewDebugInfo.shadowMapExperiment.lastRefreshReasons],\n depth: shadowPreviewDebugInfo.shadowMapExperiment.depth\n ? {\n ...shadowPreviewDebugInfo.shadowMapExperiment.depth,\n gpuCapability: { ...shadowPreviewDebugInfo.shadowMapExperiment.depth.gpuCapability },\n static: {\n ...shadowPreviewDebugInfo.shadowMapExperiment.depth.static,\n lastRefreshReasons: [...shadowPreviewDebugInfo.shadowMapExperiment.depth.static.lastRefreshReasons],\n },\n dynamic: {\n ...shadowPreviewDebugInfo.shadowMapExperiment.depth.dynamic,\n lastRefreshReasons: [...shadowPreviewDebugInfo.shadowMapExperiment.depth.dynamic.lastRefreshReasons],\n },\n }\n : null,\n culling: {\n ...shadowPreviewDebugInfo.shadowMapExperiment.culling,\n authoredCenter: shadowPreviewDebugInfo.shadowMapExperiment.culling.authoredCenter\n ? [...shadowPreviewDebugInfo.shadowMapExperiment.culling.authoredCenter] as [number, number, number]\n : shadowPreviewDebugInfo.shadowMapExperiment.culling.authoredCenter,\n effectiveCenter: shadowPreviewDebugInfo.shadowMapExperiment.culling.effectiveCenter\n ? [...shadowPreviewDebugInfo.shadowMapExperiment.culling.effectiveCenter] as [number, number, number]\n : shadowPreviewDebugInfo.shadowMapExperiment.culling.effectiveCenter,\n authoredExtent: shadowPreviewDebugInfo.shadowMapExperiment.culling.authoredExtent\n ? [...shadowPreviewDebugInfo.shadowMapExperiment.culling.authoredExtent] as [number, number, number]\n : shadowPreviewDebugInfo.shadowMapExperiment.culling.authoredExtent,\n effectiveExtent: shadowPreviewDebugInfo.shadowMapExperiment.culling.effectiveExtent\n ? [...shadowPreviewDebugInfo.shadowMapExperiment.culling.effectiveExtent] as [number, number, number]\n : shadowPreviewDebugInfo.shadowMapExperiment.culling.effectiveExtent,\n anchor: shadowPreviewDebugInfo.shadowMapExperiment.culling.anchor\n ? [...shadowPreviewDebugInfo.shadowMapExperiment.culling.anchor] as [number, number, number]\n : shadowPreviewDebugInfo.shadowMapExperiment.culling.anchor,\n coverage: shadowPreviewDebugInfo.shadowMapExperiment.culling.coverage\n ? {\n min: [...shadowPreviewDebugInfo.shadowMapExperiment.culling.coverage.min] as [number, number, number],\n max: [...shadowPreviewDebugInfo.shadowMapExperiment.culling.coverage.max] as [number, number, number],\n }\n : null,\n },\n worldUnitsPerTexel: shadowPreviewDebugInfo.shadowMapExperiment.worldUnitsPerTexel\n ? [...shadowPreviewDebugInfo.shadowMapExperiment.worldUnitsPerTexel] as [number, number]\n : null,\n worldUnitsPerTexelByMap: shadowPreviewDebugInfo.shadowMapExperiment.worldUnitsPerTexelByMap\n ? {\n static: [...shadowPreviewDebugInfo.shadowMapExperiment.worldUnitsPerTexelByMap.static] as [number, number],\n dynamic: [...shadowPreviewDebugInfo.shadowMapExperiment.worldUnitsPerTexelByMap.dynamic] as [number, number],\n composite: [...shadowPreviewDebugInfo.shadowMapExperiment.worldUnitsPerTexelByMap.composite] as [number, number],\n }\n : null,\n registry: structuredClone(shadowPreviewDebugInfo.shadowMapExperiment.registry),\n diagnostics: shadowPreviewDebugInfo.shadowMapExperiment.diagnostics.map(entry => ({ ...entry })),\n },\n }\n : {}),\n ...createPlanarShadowRuntimeEvidence(shadowPreviewDebugInfo, casterIds),\n ...(plan.stale === true ? { artifactStale: true } : {}),\n ...(diagnostics.length ? { diagnostics } : {}),\n };\n}\n\nfunction createPlanarShadowRuntimeEvidence(\n shadowPreviewDebugInfo: LocalEditorCommandShadowPreviewDebugInfo | null | undefined,\n casterIds: ReadonlySet<string>,\n): { planar?: EditorCommandShadowRuntimeEvidence['planar'] } {\n const planar = shadowPreviewDebugInfo?.planar;\n if (!planar) return {};\n const matchingCasters = planar.casters.filter(caster => isPlanarShadowCasterEvidenceForTarget(\n collectPlanarShadowCasterSourceNodeIds(caster),\n casterIds,\n ));\n const casters = matchingCasters;\n if (casters.length === 0) return {};\n const fallbackReasons = uniqueStrings(casters.flatMap(caster => caster.fallbackReasons ?? []));\n const alphaCutoutChannels = uniqueStrings(casters.flatMap(caster => caster.alphaCutoutChannels ?? []))\n .filter((channel): channel is 'alpha' | 'luminance' | 'red' => channel === 'alpha' || channel === 'luminance' || channel === 'red');\n const alphaCutoutUvSets = uniqueNumbers(casters.flatMap(caster => caster.alphaCutoutUvSets ?? []));\n const alphaCutoutLevels = uniqueNumbers(casters.flatMap(caster => caster.alphaCutoutLevels ?? []));\n const instancedBatchIds = uniqueStrings(casters.flatMap(caster => caster.instancedBatchIds ?? []));\n const instancedBatchNames = uniqueStrings(casters.flatMap(caster => caster.instancedBatchNames ?? []));\n const batchMeshCount = instancedBatchIds.length > 0 ? instancedBatchIds.length : instancedBatchNames.length;\n const instancingFallbackReasons = uniqueStrings(casters.flatMap(caster => caster.instancingFallbackReasons ?? []));\n const independentProjectedMeshCount = casters.reduce(\n (sum, caster) => sum + (caster.independentProjectedMeshCount ?? caster.projectedMeshCount),\n 0,\n );\n const strategy = summarizePlanarShadowDebugStrategy(casters);\n return {\n planar: {\n ...(strategy ? { strategy } : {}),\n sourceMeshCount: casters.length,\n projectedMeshCount: independentProjectedMeshCount + batchMeshCount,\n convexHullMeshCount: casters.reduce((sum, caster) => sum + caster.convexHullMeshCount, 0),\n alphaCutoutMeshCount: casters.reduce((sum, caster) => sum + caster.alphaCutoutMeshCount, 0),\n instancedCasterCount: casters.reduce((sum, caster) => sum + (caster.instancedCasterCount ?? 0), 0),\n batchMeshCount,\n independentProjectedMeshCount,\n visibleInstanceCount: casters.reduce((sum, caster) => sum + (caster.visibleInstanceCount ?? 0), 0),\n ...(instancedBatchIds.length ? { instancedBatchIds } : {}),\n ...(instancedBatchNames.length ? { instancedBatchNames } : {}),\n ...(alphaCutoutChannels.length ? { alphaCutoutChannels } : {}),\n ...(alphaCutoutUvSets.length ? { alphaCutoutUvSets } : {}),\n ...(alphaCutoutLevels.length ? { alphaCutoutLevels } : {}),\n ...(fallbackReasons.length ? { fallbackReasons } : {}),\n ...(instancingFallbackReasons.length ? { instancingFallbackReasons } : {}),\n casters: casters.map(caster => ({\n sourceName: caster.sourceName,\n ...(caster.sourceNodeId ? { sourceNodeId: caster.sourceNodeId } : {}),\n ...(caster.sourceNodeIds?.length ? { sourceNodeIds: [...caster.sourceNodeIds] } : {}),\n ...(caster.sourceMeshNames?.length ? { sourceMeshNames: [...caster.sourceMeshNames] } : {}),\n shadowName: caster.shadowName,\n strategy: caster.strategy,\n hasSkeleton: caster.hasSkeleton,\n projectedMeshCount: caster.projectedMeshCount,\n convexHullMeshCount: caster.convexHullMeshCount,\n alphaCutoutMeshCount: caster.alphaCutoutMeshCount,\n ...(typeof caster.instancedCasterCount === 'number' ? { instancedCasterCount: caster.instancedCasterCount } : {}),\n ...(typeof caster.batchMeshCount === 'number' ? { batchMeshCount: caster.batchMeshCount } : {}),\n ...(caster.instancedBatchIds?.length ? { instancedBatchIds: [...caster.instancedBatchIds] } : {}),\n ...(caster.instancedBatchNames?.length ? { instancedBatchNames: [...caster.instancedBatchNames] } : {}),\n ...(typeof caster.independentProjectedMeshCount === 'number' ? { independentProjectedMeshCount: caster.independentProjectedMeshCount } : {}),\n ...(typeof caster.visibleInstanceCount === 'number' ? { visibleInstanceCount: caster.visibleInstanceCount } : {}),\n ...(caster.alphaCutoutChannels?.length ? { alphaCutoutChannels: [...caster.alphaCutoutChannels] } : {}),\n ...(caster.fallbackReasons?.length ? { fallbackReasons: [...caster.fallbackReasons] } : {}),\n ...(caster.instancingFallbackReasons?.length ? { instancingFallbackReasons: [...caster.instancingFallbackReasons] } : {}),\n })),\n },\n };\n}\n\nfunction createShadowRuntimeEvidenceCasterIds<TDocument>(\n resolved: ResolvedShadowTarget<TDocument>,\n casterId: string,\n projectionContext: ShadowProjectionContext,\n): Set<string> {\n const authoringIds = new Set<string>([casterId]);\n addShadowRuntimeEvidenceSceneDescendants(authoringIds, resolved.document, casterId);\n const ids = new Set<string>();\n for (const id of authoringIds) {\n ids.add(id);\n ids.add(projectionContext.resolveProjectionId(id));\n }\n return ids;\n}\n\nfunction addShadowRuntimeEvidenceSceneDescendants(\n ids: Set<string>,\n document: EditorSceneDocument,\n parentId: string,\n): void {\n for (const gameObject of document.scene.gameObjects) {\n const candidateParentId = readShadowSceneGameObjectParentId(gameObject);\n if (candidateParentId !== parentId || ids.has(gameObject.id)) continue;\n ids.add(gameObject.id);\n addShadowRuntimeEvidenceSceneDescendants(ids, document, gameObject.id);\n }\n}\n\nfunction readShadowSceneGameObjectParentId(gameObject: EditorSceneGameObject): string | null {\n const parentId = (gameObject as { parentId?: unknown }).parentId;\n return typeof parentId === 'string' && parentId.length > 0 ? parentId : null;\n}\n\nfunction collectPlanarShadowCasterSourceNodeIds(\n caster: NonNullable<LocalEditorCommandShadowPreviewDebugInfo['planar']>['casters'][number],\n): string[] {\n return uniqueStrings([\n ...(caster.sourceNodeId ? [caster.sourceNodeId] : []),\n ...(caster.sourceNodeIds ?? []),\n ]);\n}\n\nfunction isPlanarShadowCasterEvidenceForTarget(\n sourceNodeIds: readonly string[],\n casterIds: ReadonlySet<string>,\n): boolean {\n for (const sourceNodeId of sourceNodeIds) {\n if (casterIds.has(sourceNodeId)) return true;\n for (const casterId of casterIds) {\n if (sourceNodeId.startsWith(`${casterId}::`)) return true;\n }\n }\n return false;\n}\n\nfunction summarizePlanarShadowDebugStrategy(\n casters: readonly NonNullable<LocalEditorCommandShadowPreviewDebugInfo['planar']>['casters'][number][],\n): 'auto' | 'projected-mesh' | 'convex-hull' | undefined {\n if (casters.length === 0) return undefined;\n const hasProjected = casters.some(caster => caster.projectedMeshCount > 0);\n const hasHull = casters.some(caster => caster.convexHullMeshCount > 0);\n if (hasProjected && hasHull) return 'auto';\n if (hasProjected) return 'projected-mesh';\n if (hasHull) return 'convex-hull';\n return undefined;\n}\n\nfunction uniqueStrings(values: readonly string[]): string[] {\n return [...new Set(values.filter(value => value.length > 0))];\n}\n\nfunction uniqueNumbers(values: readonly number[]): number[] {\n return [...new Set(values.filter(value => Number.isFinite(value)))];\n}\n\nfunction mapShadowPlan(\n plan: EditorShadowResolvedPlan,\n runtimeReceiverMeshCount = 0,\n): EditorCommandShadowResolvedPlan {\n const diagnostics = mapShadowDiagnostics(plan.diagnostics);\n if (plan.backend !== 'none' && plan.receiverIds.length === 0 && runtimeReceiverMeshCount > 0) {\n const retainedDiagnostics = diagnostics.filter(diagnostic => diagnostic.code !== 'shadow.receiverNotFound');\n retainedDiagnostics.push(createRuntimeReceiversBoundDiagnostic(runtimeReceiverMeshCount));\n diagnostics.splice(0, diagnostics.length, ...retainedDiagnostics);\n }\n return {\n casterId: plan.casterId,\n receiverIds: [...plan.receiverIds],\n ...(plan.lightId ? { lightId: plan.lightId } : {}),\n backend: plan.backend,\n mode: plan.mode,\n quality: plan.quality,\n params: { ...plan.params },\n ...(plan.stale === true ? { stale: true } : {}),\n diagnostics,\n };\n}\n\nfunction mapShadowReceivers<TDocument, TPatch>(\n receivers: readonly EditorShadowReceiverCandidate[],\n state: LocalEditorCommandHarnessState<TDocument, TPatch>,\n context: { casterId?: string; lightId?: string; projectionContext?: ShadowProjectionContext } = {},\n): EditorCommandShadowReceiverCandidate[] {\n const projectionContext = context.projectionContext ?? createIdentityShadowProjectionContext();\n const casterBounds = context.casterId\n ? readShadowProjectionBounds(state, context.casterId, projectionContext)\n : undefined;\n return receivers.map((receiver) => {\n const bounds = readShadowProjectionBounds(state, receiver.receiverId, projectionContext);\n const diagnostics = mapShadowDiagnostics(receiver.diagnostics ?? []);\n if (!bounds) {\n diagnostics.push({\n severity: 'warning',\n source: 'editor',\n code: 'shadow.receiverBoundsUnavailable',\n message: `Projection bounds are unavailable for receiver \"${receiver.receiverId}\".`,\n details: { receiverId: receiver.receiverId },\n });\n }\n const authoredActive = receiver.active !== false;\n const authoredVisible = authoredActive && receiver.visible !== false;\n const effectiveVisible = readShadowPreviewEffectiveVisible(state, receiver.receiverId, projectionContext, authoredVisible);\n const suitability = createShadowReceiverSuitability(receiver, casterBounds, bounds, context.lightId);\n return {\n receiverId: receiver.receiverId,\n source: receiver.source,\n score: receiver.score,\n ...(bounds ? { bounds, boundsCenter: bounds.center } : {}),\n active: authoredActive,\n visible: effectiveVisible,\n ...(receiver.receive ? { receive: receiver.receive as EditorCommandShadowReceiverCandidate['receive'] } : {}),\n ...(suitability ? { suitability } : {}),\n ...(diagnostics.length ? { diagnostics } : {}),\n };\n });\n}\n\nfunction createShadowReceiverSuitability(\n receiver: EditorShadowReceiverCandidate,\n casterBounds: EditorCommandResolvedBounds | undefined,\n receiverBounds: EditorCommandResolvedBounds | undefined,\n lightId: string | undefined,\n): NonNullable<EditorCommandShadowReceiverCandidate['suitability']> | undefined {\n const reasons = [...(receiver.suitability?.reasons ?? [])];\n if (receiverBounds) reasons.push('receiver bounds available');\n else reasons.push('receiver bounds unavailable');\n if (casterBounds) reasons.push('caster bounds available');\n if (lightId) reasons.push(`light ${lightId}`);\n const distance = casterBounds && receiverBounds ? distance3(casterBounds.center, receiverBounds.center) : undefined;\n const overlap = casterBounds && receiverBounds ? overlapRatioXZ(casterBounds, receiverBounds) : undefined;\n return {\n score: receiver.suitability?.score ?? receiver.score,\n ...(overlap !== undefined ? { overlap } : {}),\n ...(distance !== undefined ? { distance } : {}),\n ...(receiver.suitability?.material ? { material: receiver.suitability.material } : {}),\n ...(lightId ? { light: lightId } : receiver.suitability?.light ? { light: receiver.suitability.light } : {}),\n reasons,\n };\n}\n\nfunction createShadowDebugTargetSummary<TDocument, TPatch>(\n target: ResolvedShadowTarget<TDocument>,\n state: LocalEditorCommandHarnessState<TDocument, TPatch>,\n projectionContext: ShadowProjectionContext = createIdentityShadowProjectionContext(),\n): EditorCommandShadowDebugTargetSummary {\n const id = getResolvedTargetCasterId(target);\n const projectionId = projectionContext.resolveProjectionId(id);\n const bounds = readShadowProjectionBounds(state, id, projectionContext);\n const transform = editorTransformSnapshotToAgentTransform(state.projection?.readNodeTransform(projectionId));\n if (target.kind === 'scene') {\n const active = target.gameObject.active !== false;\n return {\n objectId: target.objectId,\n label: target.gameObject.name ?? target.objectId,\n kind: target.gameObject.kind ?? 'transform',\n active,\n visible: readShadowPreviewEffectiveVisible(state, id, projectionContext, active),\n ...(bounds ? { bounds } : {}),\n ...(transform ? { transform } : {}),\n ...(!bounds ? {\n diagnostics: [{\n severity: 'warning',\n source: 'editor',\n code: 'shadow.casterBoundsUnavailable',\n message: `Projection bounds are unavailable for caster \"${target.objectId}\".`,\n }],\n } : {}),\n };\n }\n return {\n nodeId: target.nodeId,\n label: target.node.label,\n kind: target.node.kind,\n active: readBoolean(target.node.defaults?.active, true),\n visible: readShadowPreviewEffectiveVisible(\n state,\n id,\n projectionContext,\n readBoolean(target.node.defaults?.active, true),\n ),\n ...(bounds ? { bounds } : {}),\n ...(transform ? { transform } : {}),\n ...(!bounds ? {\n diagnostics: [{\n severity: 'warning',\n source: 'editor',\n code: 'shadow.casterBoundsUnavailable',\n message: `Projection bounds are unavailable for prefab node \"${target.nodeId}\".`,\n }],\n } : {}),\n };\n}\n\nfunction createShadowLightSummary(\n document: EditorSceneDocument,\n lightId: string | undefined,\n): EditorCommandShadowLightSummary | undefined {\n if (!lightId) return undefined;\n const light = findShadowGameObject(document, lightId);\n if (!light?.light) {\n return {\n lightId,\n diagnostics: [{\n severity: 'warning',\n source: 'editor',\n code: 'shadow.lightNotFound',\n message: `Resolved shadow light \"${lightId}\" was not found in the preview document.`,\n }],\n };\n }\n const diagnostics: EditorCommandDiagnostic[] = [];\n let direction: EditorCommandVec3 | undefined;\n let directionSource: EditorCommandShadowLightSummary['directionSource'] | undefined;\n const orientationDiagnostics: EditorCommandDiagnostic[] = [];\n if (light.light.type === 'directional') {\n direction = normalizeEditorSceneLightDirectionVector(light.light.direction) as EditorCommandVec3;\n directionSource = 'light.direction';\n const transform = findEditorSceneTransform(light);\n const rotation = transform && 'rotation' in transform ? transform.rotation : undefined;\n const drift = detectEditorSceneDirectionalLightOrientationDrift({\n direction: light.light.direction,\n rotation,\n });\n if (drift.hasDrift) {\n orientationDiagnostics.push({\n severity: 'warning',\n source: 'editor',\n code: 'shadow.lightOrientationDrift',\n message: 'Directional Light transform.rotation and light.direction are out of sync. Runtime shadows use light.direction until the light orientation is edited again.',\n details: {\n expectedDirectionFromTransform: cloneShadowVec3Json(drift.expectedDirection),\n actualDirection: cloneShadowVec3Json(drift.actualDirection),\n delta: drift.delta,\n tolerance: drift.tolerance,\n },\n });\n diagnostics.push(...orientationDiagnostics);\n }\n }\n return {\n lightId,\n label: light.name ?? light.id,\n type: light.light.type,\n ...(light.shadow?.light?.mode ? { mode: light.shadow.light.mode } : {}),\n ...(direction ? { direction } : {}),\n ...(directionSource ? { directionSource } : {}),\n ...(orientationDiagnostics.length ? { orientationDiagnostics } : {}),\n ...(typeof light.light.intensity === 'number' ? { intensity: light.light.intensity } : {}),\n ...(diagnostics.length ? { diagnostics } : {}),\n };\n}\n\nfunction cloneShadowVec3(value: EditorCommandVec3): EditorCommandVec3 {\n return { x: value.x, y: value.y, z: value.z };\n}\n\nfunction cloneShadowVec3Json(value: EditorCommandVec3): EditorCommandJsonObject {\n return { x: value.x, y: value.y, z: value.z };\n}\n\nfunction createShadowFootprintSummary<TDocument, TPatch>(\n plan: EditorCommandShadowResolvedPlan,\n receivers: readonly EditorCommandShadowReceiverCandidate[],\n state: LocalEditorCommandHarnessState<TDocument, TPatch>,\n projectionContext: ShadowProjectionContext = createIdentityShadowProjectionContext(),\n light?: EditorCommandShadowLightSummary,\n runtimeReceiverMeshCount = 0,\n): EditorCommandShadowFootprintSummary {\n if (plan.backend === 'none' || plan.receiverIds.length === 0) {\n if (plan.backend !== 'none' && runtimeReceiverMeshCount > 0) {\n return {\n kind: 'unknown',\n confidence: 0.7,\n diagnostics: [createRuntimeReceiversBoundDiagnostic(runtimeReceiverMeshCount)],\n };\n }\n return {\n kind: 'none',\n confidence: plan.backend === 'none' ? 1 : 0,\n diagnostics: plan.backend === 'none'\n ? [{\n severity: 'info',\n source: 'editor',\n code: 'shadow.footprintNone',\n message: 'Shadow backend is none, so no footprint is expected.',\n }]\n : [{\n severity: 'warning',\n source: 'editor',\n code: 'shadow.receiverNotFound',\n message: 'No receiver is available for an estimated shadow footprint.',\n }],\n };\n }\n const receiver = selectShadowFootprintReceiver(plan, receivers);\n if (!receiver) {\n return {\n kind: 'unknown',\n receiverId: plan.receiverIds[0],\n confidence: 0.1,\n diagnostics: [{\n severity: 'warning',\n source: 'editor',\n code: 'shadow.footprintReceiverUnavailable',\n message: 'Resolved shadow plan has receiver ids, but no receiver summaries are available for footprint selection.',\n details: { receiverIds: plan.receiverIds },\n }],\n };\n }\n const receiverBounds = receiver?.bounds as EditorCommandResolvedBounds | undefined;\n const casterBounds = readShadowProjectionBounds(state, plan.casterId, projectionContext);\n if (!receiverBounds || !casterBounds) {\n return {\n kind: 'unknown',\n receiverId: receiver?.receiverId ?? plan.receiverIds[0],\n confidence: 0.25,\n diagnostics: [{\n severity: 'warning',\n source: 'editor',\n code: 'shadow.footprintBoundsUnavailable',\n message: 'Caster or receiver bounds are unavailable, so the footprint can only be reported structurally.',\n }],\n };\n }\n const footprintHeight = 0.02;\n const direction = normalizeShadowDirection(light?.direction);\n const projectedBounds = direction\n ? projectCasterBoundsToReceiver(casterBounds, receiverBounds, direction)\n : null;\n const size = projectedBounds\n ? {\n x: Math.min(receiverBounds.size.x, Math.max(projectedBounds.size.x, 0.01)),\n y: footprintHeight,\n z: Math.min(receiverBounds.size.z, Math.max(projectedBounds.size.z, 0.01)),\n }\n : {\n x: Math.min(receiverBounds.size.x, Math.max(casterBounds.size.x, 0.01)),\n y: footprintHeight,\n z: Math.min(receiverBounds.size.z, Math.max(casterBounds.size.z, 0.01)),\n };\n const center = projectedBounds?.center ?? casterBounds.center;\n const contactTolerance = Math.max(0.025, casterBounds.size.y * 0.04);\n const contactsReceiver = Math.abs(casterBounds.min.y - receiverBounds.max.y) <= contactTolerance\n || casterBounds.min.y < receiverBounds.max.y;\n const diagnostics: EditorCommandDiagnostic[] = [\n ...(!direction && light?.type === 'directional' ? [{\n severity: 'warning' as const,\n source: 'editor' as const,\n code: 'shadow.footprintDirectionUnavailable',\n message: 'Directional shadow light is missing a direction, so the footprint falls back to caster bounds.',\n details: { lightId: light.lightId },\n }] : []),\n ...(contactsReceiver ? [{\n severity: 'info' as const,\n source: 'editor' as const,\n code: 'shadow.casterContactsReceiver',\n message: 'Caster bounds touch or intersect the receiver plane. A real screenshot may show only the outside portions of the shadow because the caster itself occludes the contact footprint.',\n details: {\n casterMinY: casterBounds.min.y,\n receiverMaxY: receiverBounds.max.y,\n contactTolerance,\n },\n }] : []),\n ];\n return {\n kind: plan.backend === 'static-baked' ? 'artifact' : 'estimated',\n receiverId: receiver.receiverId,\n center: {\n x: center.x,\n y: receiverBounds.max.y + footprintHeight / 2 + 0.002,\n z: center.z,\n },\n size,\n normal: { x: 0, y: 1, z: 0 },\n ...(direction ? { direction } : {}),\n area: Math.max(0, size.x) * Math.max(0, size.z),\n confidence: receiver.suitability?.overlap !== undefined ? Math.min(1, Math.max(0.35, receiver.suitability.overlap)) : 0.6,\n ...(diagnostics.length ? { diagnostics } : {}),\n };\n}\n\nfunction createRuntimeReceiversBoundDiagnostic(runtimeReceiverMeshCount: number): EditorCommandDiagnostic {\n return {\n severity: 'info',\n source: 'runtime',\n code: 'shadow.runtimeReceiversBound',\n message: `${runtimeReceiverMeshCount} receiver meshes are bound by the Shadow Map runtime; no authored receiver id is required.`,\n details: { runtimeReceiverMeshCount },\n };\n}\n\nfunction selectShadowFootprintReceiver(\n plan: EditorCommandShadowResolvedPlan,\n receivers: readonly EditorCommandShadowReceiverCandidate[],\n): EditorCommandShadowReceiverCandidate | undefined {\n const planOrder = new Map(plan.receiverIds.map((receiverId, index) => [receiverId, index]));\n const candidates = receivers.filter(receiver => planOrder.has(receiver.receiverId));\n const ranked = candidates.length > 0 ? candidates : receivers;\n return [...ranked].sort((left, right) => compareShadowReceiverForFootprint(left, right, planOrder))[0];\n}\n\nfunction compareShadowReceiverForFootprint(\n left: EditorCommandShadowReceiverCandidate,\n right: EditorCommandShadowReceiverCandidate,\n planOrder: ReadonlyMap<string, number>,\n): number {\n const leftVisible = left.active !== false && left.visible !== false ? 1 : 0;\n const rightVisible = right.active !== false && right.visible !== false ? 1 : 0;\n if (leftVisible !== rightVisible) return rightVisible - leftVisible;\n\n const leftHasBounds = left.bounds ? 1 : 0;\n const rightHasBounds = right.bounds ? 1 : 0;\n if (leftHasBounds !== rightHasBounds) return rightHasBounds - leftHasBounds;\n\n const leftOverlap = typeof left.suitability?.overlap === 'number' ? left.suitability.overlap : -1;\n const rightOverlap = typeof right.suitability?.overlap === 'number' ? right.suitability.overlap : -1;\n if (leftOverlap !== rightOverlap) return rightOverlap - leftOverlap;\n\n const leftDistance = typeof left.suitability?.distance === 'number' ? left.suitability.distance : Number.POSITIVE_INFINITY;\n const rightDistance = typeof right.suitability?.distance === 'number' ? right.suitability.distance : Number.POSITIVE_INFINITY;\n if (leftDistance !== rightDistance) return leftDistance - rightDistance;\n\n const leftScore = typeof left.suitability?.score === 'number' ? left.suitability.score : left.score ?? 0;\n const rightScore = typeof right.suitability?.score === 'number' ? right.suitability.score : right.score ?? 0;\n if (leftScore !== rightScore) return rightScore - leftScore;\n\n const leftOrder = planOrder.get(left.receiverId) ?? Number.MAX_SAFE_INTEGER;\n const rightOrder = planOrder.get(right.receiverId) ?? Number.MAX_SAFE_INTEGER;\n return leftOrder - rightOrder;\n}\n\nfunction normalizeShadowDirection(direction: EditorCommandVec3 | undefined): EditorCommandVec3 | null {\n if (!direction) return null;\n const length = Math.hypot(direction.x, direction.y, direction.z);\n if (!Number.isFinite(length) || length <= 1e-6) return null;\n return {\n x: direction.x / length,\n y: direction.y / length,\n z: direction.z / length,\n };\n}\n\nfunction projectCasterBoundsToReceiver(\n casterBounds: EditorCommandResolvedBounds,\n receiverBounds: EditorCommandResolvedBounds,\n direction: EditorCommandVec3,\n): { center: EditorCommandVec3; size: EditorCommandVec3 } | null {\n if (Math.abs(direction.y) <= 1e-5) return null;\n const receiverY = receiverBounds.max.y;\n const points: EditorCommandVec3[] = [];\n for (const x of [casterBounds.min.x, casterBounds.max.x]) {\n for (const y of [casterBounds.min.y, casterBounds.max.y]) {\n for (const z of [casterBounds.min.z, casterBounds.max.z]) {\n const t = (receiverY - y) / direction.y;\n if (!Number.isFinite(t)) continue;\n if (t < 0) {\n points.push({ x, y: receiverY, z });\n continue;\n }\n points.push({\n x: x + direction.x * t,\n y: receiverY,\n z: z + direction.z * t,\n });\n }\n }\n }\n if (points.length === 0) return null;\n const min = {\n x: Math.min(...points.map(point => point.x)),\n y: receiverY,\n z: Math.min(...points.map(point => point.z)),\n };\n const max = {\n x: Math.max(...points.map(point => point.x)),\n y: receiverY,\n z: Math.max(...points.map(point => point.z)),\n };\n return {\n center: {\n x: (min.x + max.x) / 2,\n y: receiverY,\n z: (min.z + max.z) / 2,\n },\n size: {\n x: Math.max(0, max.x - min.x),\n y: 0,\n z: Math.max(0, max.z - min.z),\n },\n };\n}\n\nfunction readShadowProjectionBounds<TDocument, TPatch>(\n state: LocalEditorCommandHarnessState<TDocument, TPatch>,\n targetId: string,\n projectionContext: ShadowProjectionContext,\n): EditorCommandResolvedBounds | undefined {\n const projectionId = projectionContext.resolveProjectionId(targetId);\n return createEditorCommandBounds(state.projection?.getSelectionBounds([projectionId]) ?? null);\n}\n\nfunction readShadowPreviewEffectiveVisible<TDocument, TPatch>(\n state: LocalEditorCommandHarnessState<TDocument, TPatch>,\n targetId: string,\n projectionContext: ShadowProjectionContext,\n authoredVisible: boolean,\n): boolean {\n const projectionId = projectionContext.resolveProjectionId(targetId);\n const projectionEntry = state.projection?.getPreviewVisibilityOverrides?.()\n ?.find(entry => entry.nodeId === projectionId || entry.nodeId === targetId);\n if (projectionEntry) return projectionEntry.effectiveVisible;\n const overrides = state.previewVisibility?.overrides ?? {};\n const override = overrides[projectionId] ?? overrides[targetId];\n return authoredVisible && override !== false;\n}\n\nfunction createEditorCommandBounds(\n bounds: { center: { x: number; y: number; z: number }; size: { x: number; y: number; z: number } } | null,\n): EditorCommandResolvedBounds | undefined {\n if (!bounds) return undefined;\n const half = {\n x: bounds.size.x / 2,\n y: bounds.size.y / 2,\n z: bounds.size.z / 2,\n };\n return {\n center: { ...bounds.center },\n size: { ...bounds.size },\n min: {\n x: bounds.center.x - half.x,\n y: bounds.center.y - half.y,\n z: bounds.center.z - half.z,\n },\n max: {\n x: bounds.center.x + half.x,\n y: bounds.center.y + half.y,\n z: bounds.center.z + half.z,\n },\n };\n}\n\nfunction distance3(a: { x: number; y: number; z: number }, b: { x: number; y: number; z: number }): number {\n return Math.hypot(a.x - b.x, a.y - b.y, a.z - b.z);\n}\n\nfunction overlapRatioXZ(\n a: EditorCommandResolvedBounds,\n b: EditorCommandResolvedBounds,\n): number {\n const overlapX = Math.max(0, Math.min(a.max.x, b.max.x) - Math.max(a.min.x, b.min.x));\n const overlapZ = Math.max(0, Math.min(a.max.z, b.max.z) - Math.max(a.min.z, b.min.z));\n const intersection = overlapX * overlapZ;\n const casterArea = Math.max(0.0001, a.size.x * a.size.z);\n return Math.max(0, Math.min(1, intersection / casterArea));\n}\n\nfunction mapShadowDiagnostics(diagnostics: readonly EditorShadowDiagnostic[]): EditorCommandDiagnostic[] {\n return diagnostics.map(diagnostic => ({\n severity: diagnostic.severity,\n source: 'editor',\n code: diagnostic.code,\n message: diagnostic.message,\n ...(diagnostic.casterId ? { objectId: diagnostic.casterId } : {}),\n details: {\n ...(diagnostic.details ?? {}),\n ...(diagnostic.casterId ? { casterId: diagnostic.casterId } : {}),\n ...(diagnostic.receiverId ? { receiverId: diagnostic.receiverId } : {}),\n ...(diagnostic.lightId ? { lightId: diagnostic.lightId } : {}),\n },\n }));\n}\n\nfunction createShadowTargetDiagnostics<TDocument>(\n resolved: ResolvedShadowTarget<TDocument>,\n): EditorCommandDiagnostic[] {\n if (resolved.kind !== 'prefab-stage') return [];\n return [{\n severity: 'info',\n source: 'editor',\n code: 'shadow.prefabStagePreview',\n message: 'Prefab stage shadow resolution uses editable prefab nodes as a preview scene; runtime scene receiver/light binding is finalized by the scene compiler.',\n details: { assetId: resolved.details.stage.assetId, nodeId: resolved.nodeId },\n }];\n}\n\nfunction getResolvedTargetCasterId<TDocument>(target: ResolvedShadowTarget<TDocument>): string {\n return target.kind === 'scene' ? target.objectId : target.nodeId;\n}\n\nfunction asEditorSceneDocument(value: unknown): EditorSceneDocument | null {\n if (!isRecord(value)) return null;\n const scene = value.scene;\n if (!isRecord(scene) || !Array.isArray(scene.gameObjects)) return null;\n if (!Array.isArray(value.assets)) return null;\n return value as EditorSceneDocument;\n}\n\nfunction findShadowGameObject(document: EditorSceneDocument, objectId: string): EditorSceneGameObject | null {\n return document.scene.gameObjects.find(gameObject => gameObject.id === objectId) ?? null;\n}\n\nfunction normalizePrefabNodeId(value: unknown): string {\n const id = normalizeEditorCommandString(value);\n return id.startsWith('prefab-node:') ? id.slice('prefab-node:'.length) : id;\n}\n\nfunction readBoolean(value: unknown, fallback: boolean): boolean {\n return typeof value === 'boolean' ? value : fallback;\n}\n\nfunction isRecord(value: unknown): value is Record<string, any> {\n return !!value && typeof value === 'object' && !Array.isArray(value);\n}\n"]}
|