@fps-games/editor 0.2.0-beta.3 → 0.2.0-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.
Files changed (116) hide show
  1. package/dist/agent-bridge/capabilities/editor-state.d.ts.map +1 -1
  2. package/dist/agent-bridge/capabilities/editor-state.js +26 -17
  3. package/dist/agent-bridge/capabilities/editor-state.js.map +1 -1
  4. package/dist/agent-bridge/capabilities/prefabs.d.ts.map +1 -1
  5. package/dist/agent-bridge/capabilities/prefabs.js +61 -13
  6. package/dist/agent-bridge/capabilities/prefabs.js.map +1 -1
  7. package/dist/agent-bridge/capabilities/scene-objects.d.ts +1 -1
  8. package/dist/agent-bridge/capabilities/scene-objects.d.ts.map +1 -1
  9. package/dist/agent-bridge/capabilities/scene-objects.js +110 -25
  10. package/dist/agent-bridge/capabilities/scene-objects.js.map +1 -1
  11. package/dist/agent-bridge/capabilities/selection.d.ts.map +1 -1
  12. package/dist/agent-bridge/capabilities/selection.js +8 -5
  13. package/dist/agent-bridge/capabilities/selection.js.map +1 -1
  14. package/dist/agent-bridge/capabilities/shadows.d.ts.map +1 -1
  15. package/dist/agent-bridge/capabilities/shadows.js +11 -2
  16. package/dist/agent-bridge/capabilities/shadows.js.map +1 -1
  17. package/dist/agent-bridge/capabilities/transform.d.ts.map +1 -1
  18. package/dist/agent-bridge/capabilities/transform.js +6 -4
  19. package/dist/agent-bridge/capabilities/transform.js.map +1 -1
  20. package/dist/agent-bridge/capabilities/viewport.d.ts.map +1 -1
  21. package/dist/agent-bridge/capabilities/viewport.js +79 -47
  22. package/dist/agent-bridge/capabilities/viewport.js.map +1 -1
  23. package/dist/agent-bridge/shared.d.ts +8 -3
  24. package/dist/agent-bridge/shared.d.ts.map +1 -1
  25. package/dist/agent-bridge/shared.js +32 -0
  26. package/dist/agent-bridge/shared.js.map +1 -1
  27. package/dist/build-info.json +34 -34
  28. package/dist/local-editor-agent-actions.d.ts.map +1 -1
  29. package/dist/local-editor-agent-actions.js +9 -5
  30. package/dist/local-editor-agent-actions.js.map +1 -1
  31. package/dist/local-editor-harness.d.ts.map +1 -1
  32. package/dist/local-editor-harness.js +264 -41
  33. package/dist/local-editor-harness.js.map +1 -1
  34. package/node_modules/@fps-games/babylon-renderer/package.json +7 -7
  35. package/node_modules/@fps-games/editor-babylon/package.json +5 -5
  36. package/node_modules/@fps-games/editor-browser/dist/index.d.ts +3 -1
  37. package/node_modules/@fps-games/editor-browser/dist/index.d.ts.map +1 -1
  38. package/node_modules/@fps-games/editor-browser/dist/index.js +2 -0
  39. package/node_modules/@fps-games/editor-browser/dist/index.js.map +1 -1
  40. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-controller.d.ts +2 -1
  41. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-controller.d.ts.map +1 -1
  42. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-controller.js +260 -94
  43. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-controller.js.map +1 -1
  44. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-projection.d.ts +7 -0
  45. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-projection.d.ts.map +1 -0
  46. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-projection.js +186 -0
  47. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-projection.js.map +1 -0
  48. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-scope.d.ts +2 -2
  49. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-scope.d.ts.map +1 -1
  50. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-scope.js +14 -8
  51. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-scope.js.map +1 -1
  52. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-tree.d.ts.map +1 -1
  53. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-tree.js +23 -7
  54. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-tree.js.map +1 -1
  55. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-icons.d.ts +1 -1
  56. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-icons.d.ts.map +1 -1
  57. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-icons.js +6 -0
  58. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-icons.js.map +1 -1
  59. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-input-router.d.ts +3 -0
  60. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-input-router.d.ts.map +1 -1
  61. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-input-router.js +60 -13
  62. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-input-router.js.map +1 -1
  63. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-status-diagnostics.d.ts +24 -0
  64. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-status-diagnostics.d.ts.map +1 -0
  65. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-status-diagnostics.js +69 -0
  66. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-status-diagnostics.js.map +1 -0
  67. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-types.d.ts +58 -14
  68. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-types.d.ts.map +1 -1
  69. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-types.js.map +1 -1
  70. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui.d.ts +1 -1
  71. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui.d.ts.map +1 -1
  72. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui.js +196 -11
  73. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui.js.map +1 -1
  74. package/node_modules/@fps-games/editor-browser/package.json +4 -4
  75. package/node_modules/@fps-games/editor-core/dist/editor-session.d.ts +3 -0
  76. package/node_modules/@fps-games/editor-core/dist/editor-session.d.ts.map +1 -1
  77. package/node_modules/@fps-games/editor-core/dist/editor-session.js +9 -0
  78. package/node_modules/@fps-games/editor-core/dist/editor-session.js.map +1 -1
  79. package/node_modules/@fps-games/editor-core/package.json +6 -6
  80. package/node_modules/@fps-games/editor-forge-play/package.json +2 -2
  81. package/node_modules/@fps-games/editor-playable-sdk/package.json +6 -6
  82. package/node_modules/@fps-games/editor-protocol/package.json +2 -2
  83. package/node_modules/@fps-games/editor-tooling/package.json +3 -3
  84. package/node_modules/@fps-games/playable-assets/package.json +1 -1
  85. package/node_modules/@fps-games/playable-contracts/package.json +1 -1
  86. package/node_modules/@fps-games/playable-rendering/package.json +2 -2
  87. package/node_modules/@fps-games/playable-runtime/package.json +12 -12
  88. package/node_modules/@fps-games/playable-runtime-data/package.json +4 -4
  89. package/node_modules/@fps-games/playable-scene/package.json +2 -2
  90. package/node_modules/@fps-games/plugin-api/package.json +1 -1
  91. package/node_modules/@fps-games/plugin-assets/dist/version.d.ts +1 -1
  92. package/node_modules/@fps-games/plugin-assets/dist/version.js +1 -1
  93. package/node_modules/@fps-games/plugin-assets/dist/version.js.map +1 -1
  94. package/node_modules/@fps-games/plugin-assets/package.json +5 -5
  95. package/node_modules/@fps-games/plugin-host/package.json +2 -2
  96. package/node_modules/@fps-games/plugin-markers/dist/version.d.ts +1 -1
  97. package/node_modules/@fps-games/plugin-markers/dist/version.js +1 -1
  98. package/node_modules/@fps-games/plugin-markers/dist/version.js.map +1 -1
  99. package/node_modules/@fps-games/plugin-markers/package.json +5 -5
  100. package/node_modules/@fps-games/plugin-materials/dist/version.d.ts +1 -1
  101. package/node_modules/@fps-games/plugin-materials/dist/version.js +1 -1
  102. package/node_modules/@fps-games/plugin-materials/dist/version.js.map +1 -1
  103. package/node_modules/@fps-games/plugin-materials/package.json +5 -5
  104. package/node_modules/@fps-games/plugin-rendering/dist/version.d.ts +1 -1
  105. package/node_modules/@fps-games/plugin-rendering/dist/version.js +1 -1
  106. package/node_modules/@fps-games/plugin-rendering/dist/version.js.map +1 -1
  107. package/node_modules/@fps-games/plugin-rendering/package.json +5 -5
  108. package/node_modules/@fps-games/plugin-scene/dist/version.d.ts +1 -1
  109. package/node_modules/@fps-games/plugin-scene/dist/version.js +1 -1
  110. package/node_modules/@fps-games/plugin-scene/dist/version.js.map +1 -1
  111. package/node_modules/@fps-games/plugin-scene/package.json +5 -5
  112. package/node_modules/@fps-games/plugin-shadows/dist/version.d.ts +1 -1
  113. package/node_modules/@fps-games/plugin-shadows/dist/version.js +1 -1
  114. package/node_modules/@fps-games/plugin-shadows/dist/version.js.map +1 -1
  115. package/node_modules/@fps-games/plugin-shadows/package.json +7 -7
  116. package/package.json +19 -19
@@ -1 +1 @@
1
- {"version":3,"file":"shadows.js","sourceRoot":"","sources":["../../../src/agent-bridge/capabilities/shadows.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n collectEditorShadowReceiverCandidates,\n detectEditorSceneDirectionalLightOrientationDrift,\n findEditorSceneTransform,\n normalizeEditorSceneLightDirectionVector,\n resolveEditorSceneGameObjectShadowSettings,\n resolveEditorShadowPlan,\n type EditorShadowResolvePlanInput,\n type EditorSceneDocument,\n type EditorSceneGameObject,\n} from '@fps-games/editor-playable-sdk';\nimport {\n assertEditorShadowSettingsContract,\n mergeEditorShadowSettings,\n readEditorShadowSettings,\n resolveEditorShadowParams,\n type EditorShadowDiagnostic,\n type EditorShadowReceiverCandidate,\n type EditorShadowResolvedPlan,\n type EditorShadowSettings,\n} from '@fps-games/playable-rendering';\nimport {\n EDITOR_AGENT_BRIDGE_CAPABILITY_ID,\n type EditorAgentBridgeBounds,\n type EditorAgentBridgeDiagnostic,\n type EditorAgentBridgeJsonObject,\n type EditorAgentBridgeShadowPolicyGetInput,\n type EditorAgentBridgeShadowPolicyGetOutput,\n type EditorAgentBridgeShadowPolicySetInput,\n type EditorAgentBridgeShadowPolicySetOutput,\n type EditorAgentBridgeShadowDebugContextClearOutput,\n type EditorAgentBridgeShadowDebugContextEnterInput,\n type EditorAgentBridgeShadowDebugContextEnterOutput,\n type EditorAgentBridgeShadowDebugInspectOutput,\n type EditorAgentBridgeShadowDebugOverlayClearOutput,\n type EditorAgentBridgeShadowDebugOverlaySetInput,\n type EditorAgentBridgeShadowDebugOverlaySetOutput,\n type EditorAgentBridgeShadowDebugVisibilityMeasureInput,\n type EditorAgentBridgeShadowDebugVisibilityMeasureOutput,\n type EditorAgentBridgeShadowRuntimeEvidence,\n type EditorAgentBridgeShadowReceiverCandidate,\n type EditorAgentBridgeShadowDebugTargetSummary,\n type EditorAgentBridgeShadowFootprintSummary,\n type EditorAgentBridgeShadowLightSummary,\n type EditorAgentBridgeShadowReceiversListInput,\n type EditorAgentBridgeShadowReceiversListOutput,\n type EditorAgentBridgeShadowResolvedPlan,\n type EditorAgentBridgeShadowResolvePreviewInput,\n type EditorAgentBridgeShadowResolvePreviewOutput,\n type EditorAgentBridgeShadowSettings,\n type EditorAgentBridgeShadowStaticBakeInput,\n type EditorAgentBridgeShadowStaticBakeOutput,\n type EditorAgentBridgeShadowStaticInvalidateInput,\n type EditorAgentBridgeShadowStaticInvalidateOutput,\n type EditorAgentBridgeShadowTarget,\n type EditorAgentBridgeVec3,\n} from '@fps-games/editor-protocol';\nimport {\n createLocalEditorAgentBridgeFailure,\n editorTransformSnapshotToAgentTransform,\n} from '../diagnostics.js';\nimport type { LocalEditorAgentBridgeShadowSource } from '../source-types.js';\nimport {\n normalizeAgentBridgeIdList,\n normalizeAgentBridgeString,\n type LocalEditorAgentBridgeCapabilitySourceOperations,\n type LocalEditorAgentBridgeHarnessState,\n type LocalEditorAgentBridgePrefabStageDetails,\n type LocalEditorAgentBridgeShadowPreviewDebugInfo,\n type LocalEditorAgentBridgeShadowDebugOverlayItem,\n} from '../shared.js';\nimport type { LocalEditorHarnessOptions } from '../../local-editor-harness.js';\n\nconst PREFAB_STAGE_ITEM_PREFIX = 'prefab-node:';\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: EditorAgentBridgeShadowTarget;\n document: EditorSceneDocument;\n rawDocument: TDocument;\n objectId: string;\n gameObject: EditorSceneGameObject;\n }\n | {\n kind: 'prefab-stage';\n target: EditorAgentBridgeShadowTarget;\n details: LocalEditorAgentBridgePrefabStageDetails<TDocument>;\n nodeId: string;\n node: PrefabShadowNode;\n document: EditorSceneDocument;\n };\n\ntype StrictEditorShadowResolvePlanInput = EditorShadowResolvePlanInput & {\n strictExplicitReceivers?: boolean;\n};\n\ntype AgentBridgeResolvedBounds = Required<Pick<EditorAgentBridgeBounds, 'min' | 'max' | 'size' | 'center'>>;\n\ninterface ShadowProjectionContext {\n resolveProjectionId(targetId: string): string;\n}\n\nexport function createLocalEditorAgentBridgeShadowSource<TDocument, TPatch, TAsset>(\n state: LocalEditorAgentBridgeHarnessState<TDocument, TPatch>,\n options: LocalEditorHarnessOptions<TDocument, TPatch, TAsset>,\n renderUi: () => void,\n operations: LocalEditorAgentBridgeCapabilitySourceOperations<TDocument>,\n): LocalEditorAgentBridgeShadowSource {\n return {\n getPolicy(input) {\n const resolved = resolveShadowTarget(\n EDITOR_AGENT_BRIDGE_CAPABILITY_ID.SHADOW_POLICY_GET,\n state,\n input,\n operations,\n );\n if (!resolved.ok) return resolved.result;\n return createShadowPolicyGetOutput(resolved.target);\n },\n setPolicy(input) {\n const policy = normalizeShadowPolicy(input.policy);\n if (!policy.ok) {\n return createLocalEditorAgentBridgeFailure(\n EDITOR_AGENT_BRIDGE_CAPABILITY_ID.SHADOW_POLICY_SET,\n policy.message,\n { code: 'shadow.invalidInput', details: { hasPolicy: input.policy != null } },\n );\n }\n const resolved = resolveShadowTarget(\n EDITOR_AGENT_BRIDGE_CAPABILITY_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_AGENT_BRIDGE_CAPABILITY_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 return {\n receivers: mapShadowReceivers(\n collectEditorShadowReceiverCandidates({\n document: resolved.target.document,\n casterId,\n }),\n state,\n { casterId, projectionContext },\n ).filter(receiver => input.includeAuto === true || receiver.source !== 'auto'),\n diagnostics: createShadowTargetDiagnostics(resolved.target),\n } satisfies EditorAgentBridgeShadowReceiversListOutput;\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 createLocalEditorAgentBridgeFailure(\n EDITOR_AGENT_BRIDGE_CAPABILITY_ID.SHADOW_RESOLVE_PREVIEW,\n policy.message,\n { code: 'shadow.invalidInput', details: { hasPolicy: input.policy != null } },\n );\n }\n const resolved = resolveShadowTarget(\n EDITOR_AGENT_BRIDGE_CAPABILITY_ID.SHADOW_RESOLVE_PREVIEW,\n state,\n input,\n operations,\n );\n if (!resolved.ok) return resolved.result;\n const receiverIds = normalizeAgentBridgeIdList(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 plan = mapShadowPlan(resolveEditorShadowPlan(planInput));\n const allReceivers = mapShadowReceivers(\n collectEditorShadowReceiverCandidates({\n document: resolved.target.document,\n casterId,\n explicitReceiverIds: receiverIds.length > 0 ? receiverIds : undefined,\n }),\n state,\n {\n casterId,\n lightId: plan.lightId,\n projectionContext: createShadowProjectionContext(resolved.target, operations),\n },\n );\n const receiverIdSet = new Set(plan.receiverIds);\n const receivers = receiverIds.length > 0\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 ),\n receivers,\n diagnostics: createShadowTargetDiagnostics(resolved.target),\n } satisfies EditorAgentBridgeShadowResolvePreviewOutput;\n },\n inspectDebug(input) {\n const resolved = resolveShadowTarget(\n EDITOR_AGENT_BRIDGE_CAPABILITY_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 });\n },\n enterDebugContext(input) {\n const resolved = resolveShadowTarget(\n EDITOR_AGENT_BRIDGE_CAPABILITY_ID.SHADOW_DEBUG_CONTEXT_ENTER,\n state,\n input,\n operations,\n );\n if (!resolved.ok) return resolved.result;\n return enterShadowDebugContext(state, renderUi, operations, resolved.target, input);\n },\n clearDebugContext() {\n return clearShadowDebugContext(state, renderUi, operations);\n },\n setDebugOverlay(input) {\n const resolved = resolveShadowTarget(\n EDITOR_AGENT_BRIDGE_CAPABILITY_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 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 EditorAgentBridgeShadowDebugOverlaySetOutput;\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 EditorAgentBridgeShadowDebugOverlayClearOutput;\n },\n measureVisibility(input) {\n const resolved = resolveShadowTarget(\n EDITOR_AGENT_BRIDGE_CAPABILITY_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 return createShadowDebugVisibilityMeasureOutput(inspect, input);\n },\n async bakeStatic(input) {\n const resolved = resolveShadowTarget(\n EDITOR_AGENT_BRIDGE_CAPABILITY_ID.SHADOW_STATIC_BAKE,\n state,\n input,\n operations,\n );\n if (!resolved.ok) return resolved.result;\n const receiverIds = normalizeAgentBridgeIdList(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 EditorAgentBridgeShadowStaticBakeOutput;\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 EditorAgentBridgeShadowStaticBakeOutput;\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 EditorAgentBridgeShadowStaticBakeOutput;\n },\n invalidateStatic(input) {\n const resolved = resolveShadowTarget(\n EDITOR_AGENT_BRIDGE_CAPABILITY_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 EditorAgentBridgeShadowStaticInvalidateOutput;\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 EditorAgentBridgeShadowStaticInvalidateOutput;\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 EditorAgentBridgeShadowStaticInvalidateOutput;\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 EditorAgentBridgeShadowStaticInvalidateOutput;\n },\n };\n}\n\nfunction createShadowPolicyGetOutput<TDocument>(\n resolved: ResolvedShadowTarget<TDocument>,\n): EditorAgentBridgeShadowPolicyGetOutput {\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 EditorAgentBridgeShadowSettings } : {}),\n effectivePolicy: (effective.settings ? structuredClone(effective.settings) : {}) as EditorAgentBridgeShadowSettings,\n plan: 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 EditorAgentBridgeShadowSettings } : {}),\n effectivePolicy: (policy ? structuredClone(policy) : {}) as EditorAgentBridgeShadowSettings,\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: LocalEditorAgentBridgeHarnessState<TDocument, TPatch>,\n options: { receiverIds?: readonly unknown[]; projectionContext?: ShadowProjectionContext } = {},\n extraOptions?: { shadowPreviewDebugInfo?: LocalEditorAgentBridgeShadowPreviewDebugInfo | null },\n): EditorAgentBridgeShadowDebugInspectOutput {\n const casterId = getResolvedTargetCasterId(resolved);\n const projectionContext = options.projectionContext ?? createIdentityShadowProjectionContext();\n const effectivePolicy = getResolvedTargetShadowPolicy(resolved);\n const receiverIds = normalizeAgentBridgeIdList(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 plan = mapShadowPlan(resolveEditorShadowPlan(planInput));\n const allReceivers = mapShadowReceivers(\n collectEditorShadowReceiverCandidates({\n document: resolved.document,\n casterId,\n explicitReceiverIds: receiverIds.length > 0 ? receiverIds : undefined,\n }),\n state,\n { casterId, lightId: plan.lightId, projectionContext },\n );\n const resolvedReceiverIds = new Set(plan.receiverIds);\n const receivers = receiverIds.length > 0\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 EditorAgentBridgeShadowSettings } : {}),\n effectivePolicy: (effectivePolicy ? structuredClone(effectivePolicy) : {}) as EditorAgentBridgeShadowSettings,\n plan,\n ...(light ? { light } : {}),\n receivers,\n footprint: createShadowFootprintSummary(plan, receivers, state, projectionContext, light),\n runtimeEvidence,\n ...(diagnostics.length ? { diagnostics } : {}),\n };\n}\n\nfunction enterShadowDebugContext<TDocument, TPatch>(\n state: LocalEditorAgentBridgeHarnessState<TDocument, TPatch>,\n renderUi: () => void,\n operations: LocalEditorAgentBridgeCapabilitySourceOperations<TDocument>,\n resolved: ResolvedShadowTarget<TDocument>,\n input: EditorAgentBridgeShadowDebugContextEnterInput,\n): EditorAgentBridgeShadowDebugContextEnterOutput | ReturnType<typeof createLocalEditorAgentBridgeFailure> {\n const projectionContext = createShadowProjectionContext(resolved, operations);\n const receiverIds = normalizeAgentBridgeIdList(input.receiverIds ?? []);\n const initialInspect = createShadowDebugInspectOutput(resolved, state, {\n receiverIds,\n projectionContext,\n }, {\n shadowPreviewDebugInfo: operations.getShadowPreviewDebugInfo?.() ?? null,\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 createLocalEditorAgentBridgeFailure(\n EDITOR_AGENT_BRIDGE_CAPABILITY_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 = normalizeAgentBridgeString(input.reason)\n || `Shadow Debug Context for ${targetId}`;\n state.projection?.clearPreviewVisibilityOverrides?.();\n const entries = state.projection?.setPreviewVisibilityOverrides?.(nextOverrides) ?? [];\n const inspect = createShadowDebugInspectOutput(resolved, state, {\n receiverIds,\n projectionContext,\n }, {\n shadowPreviewDebugInfo: operations.getShadowPreviewDebugInfo?.() ?? null,\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: EditorAgentBridgeDiagnostic[] = [\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: LocalEditorAgentBridgeHarnessState<TDocument, TPatch>,\n renderUi: () => void,\n operations: LocalEditorAgentBridgeCapabilitySourceOperations<TDocument>,\n): EditorAgentBridgeShadowDebugContextClearOutput {\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 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: LocalEditorAgentBridgeHarnessState<TDocument, TPatch>,\n entries: readonly { nodeId: string; authoredActive: boolean; effectiveVisible: boolean }[],\n diagnostics: readonly EditorAgentBridgeDiagnostic[],\n): EditorAgentBridgeShadowDebugContextEnterOutput['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: EditorAgentBridgeShadowDebugInspectOutput,\n input: EditorAgentBridgeShadowDebugOverlaySetInput,\n): LocalEditorAgentBridgeShadowDebugOverlayItem[] {\n const items: LocalEditorAgentBridgeShadowDebugOverlayItem[] = [];\n const flags = readShadowDebugOverlayFlags(input);\n const receiverIds = new Set(normalizeAgentBridgeIdList(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: EditorAgentBridgeShadowDebugInspectOutput,\n input: EditorAgentBridgeShadowDebugVisibilityMeasureInput,\n): EditorAgentBridgeShadowDebugVisibilityMeasureOutput {\n const diagnostics: EditorAgentBridgeDiagnostic[] = [\n ...(inspect.diagnostics ?? []),\n {\n severity: 'info',\n source: 'editor',\n code: 'shadow.pixelReadbackUnavailable',\n message: 'Pixel readback is not available in this editor bridge session, so shadow visibility is measured structurally from policy, receivers, footprint, and runtime evidence.',\n },\n ];\n const requestedReceiverIds = normalizeAgentBridgeIdList(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: EditorAgentBridgeShadowReceiverCandidate): 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: EditorAgentBridgeShadowDebugOverlaySetInput): {\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: EditorAgentBridgeBounds | undefined): LocalEditorAgentBridgeShadowDebugOverlayItem['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): LocalEditorAgentBridgeShadowDebugOverlayItem['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: LocalEditorAgentBridgeHarnessState<TDocument, TPatch>,\n options: LocalEditorHarnessOptions<TDocument, TPatch, TAsset>,\n renderUi: () => void,\n operations: LocalEditorAgentBridgeCapabilitySourceOperations<TDocument>,\n resolved: Extract<ResolvedShadowTarget<TDocument>, { kind: 'scene' }>,\n policy: EditorShadowSettings | undefined,\n): EditorAgentBridgeShadowPolicySetOutput | ReturnType<typeof createLocalEditorAgentBridgeFailure> {\n if (!state.session) {\n return createLocalEditorAgentBridgeFailure(\n EDITOR_AGENT_BRIDGE_CAPABILITY_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 createLocalEditorAgentBridgeFailure(\n EDITOR_AGENT_BRIDGE_CAPABILITY_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: LocalEditorAgentBridgeCapabilitySourceOperations<TDocument>,\n resolved: Extract<ResolvedShadowTarget<TDocument>, { kind: 'prefab-stage' }>,\n policy: EditorShadowSettings | undefined,\n): EditorAgentBridgeShadowPolicySetOutput | ReturnType<typeof createLocalEditorAgentBridgeFailure> {\n const rootNodeId = findPrefabRootNodeId(resolved.details);\n const changed = resolved.nodeId === 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 createLocalEditorAgentBridgeFailure(\n EDITOR_AGENT_BRIDGE_CAPABILITY_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 });\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: LocalEditorAgentBridgeCapabilitySourceOperations<TDocument>,\n details: LocalEditorAgentBridgePrefabStageDetails<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: LocalEditorAgentBridgeCapabilitySourceOperations<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: LocalEditorAgentBridgeHarnessState<TDocument, TPatch>,\n input: EditorAgentBridgeShadowTarget | EditorAgentBridgeShadowReceiversListInput,\n operations: LocalEditorAgentBridgeCapabilitySourceOperations<TDocument>,\n): { ok: true; target: ResolvedShadowTarget<TDocument> } | { ok: false; result: ReturnType<typeof createLocalEditorAgentBridgeFailure> } {\n if (state.mode !== 'editor' || !state.session) {\n return {\n ok: false,\n result: createLocalEditorAgentBridgeFailure(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 = normalizeAgentBridgeString(input.objectId);\n if (objectId) {\n if (!document) {\n return {\n ok: false,\n result: createLocalEditorAgentBridgeFailure(capabilityId, 'Shadow capabilities require an editor scene document.', {\n code: 'shadow.unsupportedDocument',\n details: { objectId },\n }),\n };\n }\n const gameObject = findShadowGameObject(document, objectId);\n if (!gameObject) {\n return {\n ok: false,\n result: createLocalEditorAgentBridgeFailure(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 const prefabTarget = resolvePrefabShadowTargetFromDetails(details, input);\n if (prefabTarget) return { ok: true, target: prefabTarget };\n }\n const activeId = normalizeAgentBridgeString(sessionState.selection.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: createLocalEditorAgentBridgeFailure(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: LocalEditorAgentBridgePrefabStageDetails<TDocument>,\n input: EditorAgentBridgeShadowTarget | EditorAgentBridgeShadowReceiversListInput,\n): Extract<ResolvedShadowTarget<TDocument>, { kind: 'prefab-stage' }> | null {\n const requestedAssetId = 'assetId' in input ? normalizeAgentBridgeString(input.assetId) : '';\n if (requestedAssetId && requestedAssetId !== details.stage.assetId && requestedAssetId !== details.stage.browserAssetId) return null;\n const nodes = listPrefabShadowNodes(details);\n const nodeId = normalizePrefabNodeId(input.nodeId)\n || getSelectedPrefabNodeId(details.stage.selectedItemId)\n || findPrefabRootNodeId(details);\n const node = nodes.find(candidate => candidate.id === nodeId) ?? null;\n if (!node) return null;\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 node,\n document,\n };\n}\n\nfunction createPrefabStageShadowDocument<TDocument>(\n details: LocalEditorAgentBridgePrefabStageDetails<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<TDocument>(\n details: LocalEditorAgentBridgePrefabStageDetails<TDocument>,\n): PrefabShadowNode[] {\n const nodes: PrefabShadowNode[] = [];\n const visit = (item: any, parentId: string | null) => {\n const nodeId = normalizePrefabNodeId(item?.nodeId ?? item?.id);\n const isNode = item?.itemType === 'prefab-node' || !!item?.nodeId || String(item?.id ?? '').startsWith(PREFAB_STAGE_ITEM_PREFIX);\n const currentParent = isNode && nodeId ? nodeId : parentId;\n if (isNode && nodeId) {\n nodes.push({\n id: nodeId,\n label: typeof item.label === 'string' ? item.label : nodeId,\n kind: typeof item.kind === 'string' ? item.kind : 'group',\n parentId,\n ...(isRecord(item.defaults) ? { defaults: structuredClone(item.defaults) } : {}),\n ...(isRecord(item.primitive) ? { primitive: structuredClone(item.primitive) } : {}),\n ...(isRecord(item.light) ? { light: structuredClone(item.light) } : {}),\n });\n }\n for (const child of Array.isArray(item?.children) ? item.children : []) visit(child, currentParent);\n };\n for (const item of details.structureItems) visit(item, null);\n return nodes;\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): EditorAgentBridgeJsonObject {\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 EditorAgentBridgeJsonObject } : {}),\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): EditorAgentBridgeDiagnostic {\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 normalizeAgentBridgeIdList(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: EditorAgentBridgeShadowResolvedPlan,\n receivers: readonly EditorAgentBridgeShadowReceiverCandidate[],\n shadowPreviewDebugInfo: LocalEditorAgentBridgeShadowPreviewDebugInfo | null | undefined,\n casterIds: ReadonlySet<string>,\n): EditorAgentBridgeShadowRuntimeEvidence {\n const diagnostics: EditorAgentBridgeDiagnostic[] = [];\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 if (plan.backend !== 'none' && receivers.length === 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 editor bridge session 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: receivers.length,\n ...createPlanarShadowRuntimeEvidence(shadowPreviewDebugInfo, casterIds),\n ...(plan.stale === true ? { artifactStale: true } : {}),\n ...(diagnostics.length ? { diagnostics } : {}),\n };\n}\n\nfunction createPlanarShadowRuntimeEvidence(\n shadowPreviewDebugInfo: LocalEditorAgentBridgeShadowPreviewDebugInfo | null | undefined,\n casterIds: ReadonlySet<string>,\n): { planar?: EditorAgentBridgeShadowRuntimeEvidence['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<LocalEditorAgentBridgeShadowPreviewDebugInfo['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<LocalEditorAgentBridgeShadowPreviewDebugInfo['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(plan: EditorShadowResolvedPlan): EditorAgentBridgeShadowResolvedPlan {\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: mapShadowDiagnostics(plan.diagnostics),\n };\n}\n\nfunction mapShadowReceivers<TDocument, TPatch>(\n receivers: readonly EditorShadowReceiverCandidate[],\n state: LocalEditorAgentBridgeHarnessState<TDocument, TPatch>,\n context: { casterId?: string; lightId?: string; projectionContext?: ShadowProjectionContext } = {},\n): EditorAgentBridgeShadowReceiverCandidate[] {\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 EditorAgentBridgeShadowReceiverCandidate['receive'] } : {}),\n ...(suitability ? { suitability } : {}),\n ...(diagnostics.length ? { diagnostics } : {}),\n };\n });\n}\n\nfunction createShadowReceiverSuitability(\n receiver: EditorShadowReceiverCandidate,\n casterBounds: AgentBridgeResolvedBounds | undefined,\n receiverBounds: AgentBridgeResolvedBounds | undefined,\n lightId: string | undefined,\n): NonNullable<EditorAgentBridgeShadowReceiverCandidate['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: LocalEditorAgentBridgeHarnessState<TDocument, TPatch>,\n projectionContext: ShadowProjectionContext = createIdentityShadowProjectionContext(),\n): EditorAgentBridgeShadowDebugTargetSummary {\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): EditorAgentBridgeShadowLightSummary | 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: EditorAgentBridgeDiagnostic[] = [];\n let direction: EditorAgentBridgeVec3 | undefined;\n let directionSource: EditorAgentBridgeShadowLightSummary['directionSource'] | undefined;\n const orientationDiagnostics: EditorAgentBridgeDiagnostic[] = [];\n if (light.light.type === 'directional') {\n direction = normalizeEditorSceneLightDirectionVector(light.light.direction) as EditorAgentBridgeVec3;\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: EditorAgentBridgeVec3): EditorAgentBridgeVec3 {\n return { x: value.x, y: value.y, z: value.z };\n}\n\nfunction cloneShadowVec3Json(value: EditorAgentBridgeVec3): EditorAgentBridgeJsonObject {\n return { x: value.x, y: value.y, z: value.z };\n}\n\nfunction createShadowFootprintSummary<TDocument, TPatch>(\n plan: EditorAgentBridgeShadowResolvedPlan,\n receivers: readonly EditorAgentBridgeShadowReceiverCandidate[],\n state: LocalEditorAgentBridgeHarnessState<TDocument, TPatch>,\n projectionContext: ShadowProjectionContext = createIdentityShadowProjectionContext(),\n light?: EditorAgentBridgeShadowLightSummary,\n): EditorAgentBridgeShadowFootprintSummary {\n if (plan.backend === 'none' || plan.receiverIds.length === 0) {\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 AgentBridgeResolvedBounds | 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: EditorAgentBridgeDiagnostic[] = [\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 selectShadowFootprintReceiver(\n plan: EditorAgentBridgeShadowResolvedPlan,\n receivers: readonly EditorAgentBridgeShadowReceiverCandidate[],\n): EditorAgentBridgeShadowReceiverCandidate | 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: EditorAgentBridgeShadowReceiverCandidate,\n right: EditorAgentBridgeShadowReceiverCandidate,\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: EditorAgentBridgeVec3 | undefined): EditorAgentBridgeVec3 | 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: AgentBridgeResolvedBounds,\n receiverBounds: AgentBridgeResolvedBounds,\n direction: EditorAgentBridgeVec3,\n): { center: EditorAgentBridgeVec3; size: EditorAgentBridgeVec3 } | null {\n if (Math.abs(direction.y) <= 1e-5) return null;\n const receiverY = receiverBounds.max.y;\n const points: EditorAgentBridgeVec3[] = [];\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: LocalEditorAgentBridgeHarnessState<TDocument, TPatch>,\n targetId: string,\n projectionContext: ShadowProjectionContext,\n): AgentBridgeResolvedBounds | undefined {\n const projectionId = projectionContext.resolveProjectionId(targetId);\n return createAgentBridgeBounds(state.projection?.getSelectionBounds([projectionId]) ?? null);\n}\n\nfunction readShadowPreviewEffectiveVisible<TDocument, TPatch>(\n state: LocalEditorAgentBridgeHarnessState<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 createAgentBridgeBounds(\n bounds: { center: { x: number; y: number; z: number }; size: { x: number; y: number; z: number } } | null,\n): AgentBridgeResolvedBounds | 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: AgentBridgeResolvedBounds,\n b: AgentBridgeResolvedBounds,\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[]): EditorAgentBridgeDiagnostic[] {\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): EditorAgentBridgeDiagnostic[] {\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 findPrefabRootNodeId<TDocument>(details: LocalEditorAgentBridgePrefabStageDetails<TDocument>): string {\n const nodes = listPrefabShadowNodes(details);\n return nodes.find(node => node.kind === 'root')?.id\n ?? nodes.find(node => !node.parentId)?.id\n ?? 'prefab-root';\n}\n\nfunction normalizePrefabNodeId(value: unknown): string {\n const id = normalizeAgentBridgeString(value);\n return id.startsWith(PREFAB_STAGE_ITEM_PREFIX) ? id.slice(PREFAB_STAGE_ITEM_PREFIX.length) : id;\n}\n\nfunction getSelectedPrefabNodeId(itemId: string | null | undefined): string {\n return normalizePrefabNodeId(itemId);\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"]}
1
+ {"version":3,"file":"shadows.js","sourceRoot":"","sources":["../../../src/agent-bridge/capabilities/shadows.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n collectEditorShadowReceiverCandidates,\n detectEditorSceneDirectionalLightOrientationDrift,\n findEditorSceneTransform,\n normalizeEditorSceneLightDirectionVector,\n resolveEditorSceneGameObjectShadowSettings,\n resolveEditorShadowPlan,\n type EditorShadowResolvePlanInput,\n type EditorSceneDocument,\n type EditorSceneGameObject,\n} from '@fps-games/editor-playable-sdk';\nimport {\n assertEditorShadowSettingsContract,\n mergeEditorShadowSettings,\n readEditorShadowSettings,\n resolveEditorShadowParams,\n type EditorShadowDiagnostic,\n type EditorShadowReceiverCandidate,\n type EditorShadowResolvedPlan,\n type EditorShadowSettings,\n} from '@fps-games/playable-rendering';\nimport {\n EDITOR_AGENT_BRIDGE_CAPABILITY_ID,\n type EditorAgentBridgeBounds,\n type EditorAgentBridgeDiagnostic,\n type EditorAgentBridgeJsonObject,\n type EditorAgentBridgeShadowPolicyGetInput,\n type EditorAgentBridgeShadowPolicyGetOutput,\n type EditorAgentBridgeShadowPolicySetInput,\n type EditorAgentBridgeShadowPolicySetOutput,\n type EditorAgentBridgeShadowDebugContextClearOutput,\n type EditorAgentBridgeShadowDebugContextEnterInput,\n type EditorAgentBridgeShadowDebugContextEnterOutput,\n type EditorAgentBridgeShadowDebugInspectOutput,\n type EditorAgentBridgeShadowDebugOverlayClearOutput,\n type EditorAgentBridgeShadowDebugOverlaySetInput,\n type EditorAgentBridgeShadowDebugOverlaySetOutput,\n type EditorAgentBridgeShadowDebugVisibilityMeasureInput,\n type EditorAgentBridgeShadowDebugVisibilityMeasureOutput,\n type EditorAgentBridgeShadowRuntimeEvidence,\n type EditorAgentBridgeShadowReceiverCandidate,\n type EditorAgentBridgeShadowDebugTargetSummary,\n type EditorAgentBridgeShadowFootprintSummary,\n type EditorAgentBridgeShadowLightSummary,\n type EditorAgentBridgeShadowReceiversListInput,\n type EditorAgentBridgeShadowReceiversListOutput,\n type EditorAgentBridgeShadowResolvedPlan,\n type EditorAgentBridgeShadowResolvePreviewInput,\n type EditorAgentBridgeShadowResolvePreviewOutput,\n type EditorAgentBridgeShadowSettings,\n type EditorAgentBridgeShadowStaticBakeInput,\n type EditorAgentBridgeShadowStaticBakeOutput,\n type EditorAgentBridgeShadowStaticInvalidateInput,\n type EditorAgentBridgeShadowStaticInvalidateOutput,\n type EditorAgentBridgeShadowTarget,\n type EditorAgentBridgeVec3,\n} from '@fps-games/editor-protocol';\nimport {\n createLocalEditorAgentBridgeFailure,\n editorTransformSnapshotToAgentTransform,\n} from '../diagnostics.js';\nimport type { LocalEditorAgentBridgeShadowSource } from '../source-types.js';\nimport {\n getAgentBridgeSafeSceneSelection,\n isAgentBridgeSafeSceneObjectId,\n normalizeAgentBridgeIdList,\n normalizeAgentBridgeString,\n type LocalEditorAgentBridgeCapabilitySourceOperations,\n type LocalEditorAgentBridgeHarnessState,\n type LocalEditorAgentBridgePrefabStageDetails,\n type LocalEditorAgentBridgeShadowPreviewDebugInfo,\n type LocalEditorAgentBridgeShadowDebugOverlayItem,\n} from '../shared.js';\nimport type { LocalEditorHarnessOptions } from '../../local-editor-harness.js';\n\nconst PREFAB_STAGE_ITEM_PREFIX = 'prefab-node:';\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: EditorAgentBridgeShadowTarget;\n document: EditorSceneDocument;\n rawDocument: TDocument;\n objectId: string;\n gameObject: EditorSceneGameObject;\n }\n | {\n kind: 'prefab-stage';\n target: EditorAgentBridgeShadowTarget;\n details: LocalEditorAgentBridgePrefabStageDetails<TDocument>;\n nodeId: string;\n node: PrefabShadowNode;\n document: EditorSceneDocument;\n };\n\ntype StrictEditorShadowResolvePlanInput = EditorShadowResolvePlanInput & {\n strictExplicitReceivers?: boolean;\n};\n\ntype AgentBridgeResolvedBounds = Required<Pick<EditorAgentBridgeBounds, 'min' | 'max' | 'size' | 'center'>>;\n\ninterface ShadowProjectionContext {\n resolveProjectionId(targetId: string): string;\n}\n\nexport function createLocalEditorAgentBridgeShadowSource<TDocument, TPatch, TAsset>(\n state: LocalEditorAgentBridgeHarnessState<TDocument, TPatch>,\n options: LocalEditorHarnessOptions<TDocument, TPatch, TAsset>,\n renderUi: () => void,\n operations: LocalEditorAgentBridgeCapabilitySourceOperations<TDocument>,\n): LocalEditorAgentBridgeShadowSource {\n return {\n getPolicy(input) {\n const resolved = resolveShadowTarget(\n EDITOR_AGENT_BRIDGE_CAPABILITY_ID.SHADOW_POLICY_GET,\n state,\n input,\n operations,\n );\n if (!resolved.ok) return resolved.result;\n return createShadowPolicyGetOutput(resolved.target);\n },\n setPolicy(input) {\n const policy = normalizeShadowPolicy(input.policy);\n if (!policy.ok) {\n return createLocalEditorAgentBridgeFailure(\n EDITOR_AGENT_BRIDGE_CAPABILITY_ID.SHADOW_POLICY_SET,\n policy.message,\n { code: 'shadow.invalidInput', details: { hasPolicy: input.policy != null } },\n );\n }\n const resolved = resolveShadowTarget(\n EDITOR_AGENT_BRIDGE_CAPABILITY_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_AGENT_BRIDGE_CAPABILITY_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 return {\n receivers: mapShadowReceivers(\n collectEditorShadowReceiverCandidates({\n document: resolved.target.document,\n casterId,\n }),\n state,\n { casterId, projectionContext },\n ).filter(receiver => input.includeAuto === true || receiver.source !== 'auto'),\n diagnostics: createShadowTargetDiagnostics(resolved.target),\n } satisfies EditorAgentBridgeShadowReceiversListOutput;\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 createLocalEditorAgentBridgeFailure(\n EDITOR_AGENT_BRIDGE_CAPABILITY_ID.SHADOW_RESOLVE_PREVIEW,\n policy.message,\n { code: 'shadow.invalidInput', details: { hasPolicy: input.policy != null } },\n );\n }\n const resolved = resolveShadowTarget(\n EDITOR_AGENT_BRIDGE_CAPABILITY_ID.SHADOW_RESOLVE_PREVIEW,\n state,\n input,\n operations,\n );\n if (!resolved.ok) return resolved.result;\n const receiverIds = normalizeAgentBridgeIdList(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 plan = mapShadowPlan(resolveEditorShadowPlan(planInput));\n const allReceivers = mapShadowReceivers(\n collectEditorShadowReceiverCandidates({\n document: resolved.target.document,\n casterId,\n explicitReceiverIds: receiverIds.length > 0 ? receiverIds : undefined,\n }),\n state,\n {\n casterId,\n lightId: plan.lightId,\n projectionContext: createShadowProjectionContext(resolved.target, operations),\n },\n );\n const receiverIdSet = new Set(plan.receiverIds);\n const receivers = receiverIds.length > 0\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 ),\n receivers,\n diagnostics: createShadowTargetDiagnostics(resolved.target),\n } satisfies EditorAgentBridgeShadowResolvePreviewOutput;\n },\n inspectDebug(input) {\n const resolved = resolveShadowTarget(\n EDITOR_AGENT_BRIDGE_CAPABILITY_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 });\n },\n enterDebugContext(input) {\n const resolved = resolveShadowTarget(\n EDITOR_AGENT_BRIDGE_CAPABILITY_ID.SHADOW_DEBUG_CONTEXT_ENTER,\n state,\n input,\n operations,\n );\n if (!resolved.ok) return resolved.result;\n return enterShadowDebugContext(state, renderUi, operations, resolved.target, input);\n },\n clearDebugContext() {\n return clearShadowDebugContext(state, renderUi, operations);\n },\n setDebugOverlay(input) {\n const resolved = resolveShadowTarget(\n EDITOR_AGENT_BRIDGE_CAPABILITY_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 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 EditorAgentBridgeShadowDebugOverlaySetOutput;\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 EditorAgentBridgeShadowDebugOverlayClearOutput;\n },\n measureVisibility(input) {\n const resolved = resolveShadowTarget(\n EDITOR_AGENT_BRIDGE_CAPABILITY_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 return createShadowDebugVisibilityMeasureOutput(inspect, input);\n },\n async bakeStatic(input) {\n const resolved = resolveShadowTarget(\n EDITOR_AGENT_BRIDGE_CAPABILITY_ID.SHADOW_STATIC_BAKE,\n state,\n input,\n operations,\n );\n if (!resolved.ok) return resolved.result;\n const receiverIds = normalizeAgentBridgeIdList(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 EditorAgentBridgeShadowStaticBakeOutput;\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 EditorAgentBridgeShadowStaticBakeOutput;\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 EditorAgentBridgeShadowStaticBakeOutput;\n },\n invalidateStatic(input) {\n const resolved = resolveShadowTarget(\n EDITOR_AGENT_BRIDGE_CAPABILITY_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 EditorAgentBridgeShadowStaticInvalidateOutput;\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 EditorAgentBridgeShadowStaticInvalidateOutput;\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 EditorAgentBridgeShadowStaticInvalidateOutput;\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 EditorAgentBridgeShadowStaticInvalidateOutput;\n },\n };\n}\n\nfunction createShadowPolicyGetOutput<TDocument>(\n resolved: ResolvedShadowTarget<TDocument>,\n): EditorAgentBridgeShadowPolicyGetOutput {\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 EditorAgentBridgeShadowSettings } : {}),\n effectivePolicy: (effective.settings ? structuredClone(effective.settings) : {}) as EditorAgentBridgeShadowSettings,\n plan: 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 EditorAgentBridgeShadowSettings } : {}),\n effectivePolicy: (policy ? structuredClone(policy) : {}) as EditorAgentBridgeShadowSettings,\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: LocalEditorAgentBridgeHarnessState<TDocument, TPatch>,\n options: { receiverIds?: readonly unknown[]; projectionContext?: ShadowProjectionContext } = {},\n extraOptions?: { shadowPreviewDebugInfo?: LocalEditorAgentBridgeShadowPreviewDebugInfo | null },\n): EditorAgentBridgeShadowDebugInspectOutput {\n const casterId = getResolvedTargetCasterId(resolved);\n const projectionContext = options.projectionContext ?? createIdentityShadowProjectionContext();\n const effectivePolicy = getResolvedTargetShadowPolicy(resolved);\n const receiverIds = normalizeAgentBridgeIdList(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 plan = mapShadowPlan(resolveEditorShadowPlan(planInput));\n const allReceivers = mapShadowReceivers(\n collectEditorShadowReceiverCandidates({\n document: resolved.document,\n casterId,\n explicitReceiverIds: receiverIds.length > 0 ? receiverIds : undefined,\n }),\n state,\n { casterId, lightId: plan.lightId, projectionContext },\n );\n const resolvedReceiverIds = new Set(plan.receiverIds);\n const receivers = receiverIds.length > 0\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 EditorAgentBridgeShadowSettings } : {}),\n effectivePolicy: (effectivePolicy ? structuredClone(effectivePolicy) : {}) as EditorAgentBridgeShadowSettings,\n plan,\n ...(light ? { light } : {}),\n receivers,\n footprint: createShadowFootprintSummary(plan, receivers, state, projectionContext, light),\n runtimeEvidence,\n ...(diagnostics.length ? { diagnostics } : {}),\n };\n}\n\nfunction enterShadowDebugContext<TDocument, TPatch>(\n state: LocalEditorAgentBridgeHarnessState<TDocument, TPatch>,\n renderUi: () => void,\n operations: LocalEditorAgentBridgeCapabilitySourceOperations<TDocument>,\n resolved: ResolvedShadowTarget<TDocument>,\n input: EditorAgentBridgeShadowDebugContextEnterInput,\n): EditorAgentBridgeShadowDebugContextEnterOutput | ReturnType<typeof createLocalEditorAgentBridgeFailure> {\n const projectionContext = createShadowProjectionContext(resolved, operations);\n const receiverIds = normalizeAgentBridgeIdList(input.receiverIds ?? []);\n const initialInspect = createShadowDebugInspectOutput(resolved, state, {\n receiverIds,\n projectionContext,\n }, {\n shadowPreviewDebugInfo: operations.getShadowPreviewDebugInfo?.() ?? null,\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 createLocalEditorAgentBridgeFailure(\n EDITOR_AGENT_BRIDGE_CAPABILITY_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 = normalizeAgentBridgeString(input.reason)\n || `Shadow Debug Context for ${targetId}`;\n state.projection?.clearPreviewVisibilityOverrides?.();\n const entries = state.projection?.setPreviewVisibilityOverrides?.(nextOverrides) ?? [];\n const inspect = createShadowDebugInspectOutput(resolved, state, {\n receiverIds,\n projectionContext,\n }, {\n shadowPreviewDebugInfo: operations.getShadowPreviewDebugInfo?.() ?? null,\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: EditorAgentBridgeDiagnostic[] = [\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: LocalEditorAgentBridgeHarnessState<TDocument, TPatch>,\n renderUi: () => void,\n operations: LocalEditorAgentBridgeCapabilitySourceOperations<TDocument>,\n): EditorAgentBridgeShadowDebugContextClearOutput {\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 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: LocalEditorAgentBridgeHarnessState<TDocument, TPatch>,\n entries: readonly { nodeId: string; authoredActive: boolean; effectiveVisible: boolean }[],\n diagnostics: readonly EditorAgentBridgeDiagnostic[],\n): EditorAgentBridgeShadowDebugContextEnterOutput['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: EditorAgentBridgeShadowDebugInspectOutput,\n input: EditorAgentBridgeShadowDebugOverlaySetInput,\n): LocalEditorAgentBridgeShadowDebugOverlayItem[] {\n const items: LocalEditorAgentBridgeShadowDebugOverlayItem[] = [];\n const flags = readShadowDebugOverlayFlags(input);\n const receiverIds = new Set(normalizeAgentBridgeIdList(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: EditorAgentBridgeShadowDebugInspectOutput,\n input: EditorAgentBridgeShadowDebugVisibilityMeasureInput,\n): EditorAgentBridgeShadowDebugVisibilityMeasureOutput {\n const diagnostics: EditorAgentBridgeDiagnostic[] = [\n ...(inspect.diagnostics ?? []),\n {\n severity: 'info',\n source: 'editor',\n code: 'shadow.pixelReadbackUnavailable',\n message: 'Pixel readback is not available in this editor bridge session, so shadow visibility is measured structurally from policy, receivers, footprint, and runtime evidence.',\n },\n ];\n const requestedReceiverIds = normalizeAgentBridgeIdList(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: EditorAgentBridgeShadowReceiverCandidate): 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: EditorAgentBridgeShadowDebugOverlaySetInput): {\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: EditorAgentBridgeBounds | undefined): LocalEditorAgentBridgeShadowDebugOverlayItem['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): LocalEditorAgentBridgeShadowDebugOverlayItem['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: LocalEditorAgentBridgeHarnessState<TDocument, TPatch>,\n options: LocalEditorHarnessOptions<TDocument, TPatch, TAsset>,\n renderUi: () => void,\n operations: LocalEditorAgentBridgeCapabilitySourceOperations<TDocument>,\n resolved: Extract<ResolvedShadowTarget<TDocument>, { kind: 'scene' }>,\n policy: EditorShadowSettings | undefined,\n): EditorAgentBridgeShadowPolicySetOutput | ReturnType<typeof createLocalEditorAgentBridgeFailure> {\n if (!state.session) {\n return createLocalEditorAgentBridgeFailure(\n EDITOR_AGENT_BRIDGE_CAPABILITY_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 createLocalEditorAgentBridgeFailure(\n EDITOR_AGENT_BRIDGE_CAPABILITY_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: LocalEditorAgentBridgeCapabilitySourceOperations<TDocument>,\n resolved: Extract<ResolvedShadowTarget<TDocument>, { kind: 'prefab-stage' }>,\n policy: EditorShadowSettings | undefined,\n): EditorAgentBridgeShadowPolicySetOutput | ReturnType<typeof createLocalEditorAgentBridgeFailure> {\n const rootNodeId = findPrefabRootNodeId(resolved.details);\n const changed = resolved.nodeId === 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 createLocalEditorAgentBridgeFailure(\n EDITOR_AGENT_BRIDGE_CAPABILITY_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 });\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: LocalEditorAgentBridgeCapabilitySourceOperations<TDocument>,\n details: LocalEditorAgentBridgePrefabStageDetails<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: LocalEditorAgentBridgeCapabilitySourceOperations<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: LocalEditorAgentBridgeHarnessState<TDocument, TPatch>,\n input: EditorAgentBridgeShadowTarget | EditorAgentBridgeShadowReceiversListInput,\n operations: LocalEditorAgentBridgeCapabilitySourceOperations<TDocument>,\n): { ok: true; target: ResolvedShadowTarget<TDocument> } | { ok: false; result: ReturnType<typeof createLocalEditorAgentBridgeFailure> } {\n if (state.mode !== 'editor' || !state.session) {\n return {\n ok: false,\n result: createLocalEditorAgentBridgeFailure(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 = normalizeAgentBridgeString(input.objectId);\n if (objectId) {\n if (!document) {\n return {\n ok: false,\n result: createLocalEditorAgentBridgeFailure(capabilityId, 'Shadow capabilities require an editor scene document.', {\n code: 'shadow.unsupportedDocument',\n details: { objectId },\n }),\n };\n }\n if (!isAgentBridgeSafeSceneObjectId(operations, objectId)) {\n return {\n ok: false,\n result: createLocalEditorAgentBridgeFailure(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: createLocalEditorAgentBridgeFailure(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 const prefabTarget = resolvePrefabShadowTargetFromDetails(details, input);\n if (prefabTarget) return { ok: true, target: prefabTarget };\n }\n const activeId = normalizeAgentBridgeString(getAgentBridgeSafeSceneSelection(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: createLocalEditorAgentBridgeFailure(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: LocalEditorAgentBridgePrefabStageDetails<TDocument>,\n input: EditorAgentBridgeShadowTarget | EditorAgentBridgeShadowReceiversListInput,\n): Extract<ResolvedShadowTarget<TDocument>, { kind: 'prefab-stage' }> | null {\n const requestedAssetId = 'assetId' in input ? normalizeAgentBridgeString(input.assetId) : '';\n if (requestedAssetId && requestedAssetId !== details.stage.assetId && requestedAssetId !== details.stage.browserAssetId) return null;\n const nodes = listPrefabShadowNodes(details);\n const nodeId = normalizePrefabNodeId(input.nodeId)\n || getSelectedPrefabNodeId(details.stage.selectedItemId)\n || findPrefabRootNodeId(details);\n const node = nodes.find(candidate => candidate.id === nodeId) ?? null;\n if (!node) return null;\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 node,\n document,\n };\n}\n\nfunction createPrefabStageShadowDocument<TDocument>(\n details: LocalEditorAgentBridgePrefabStageDetails<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<TDocument>(\n details: LocalEditorAgentBridgePrefabStageDetails<TDocument>,\n): PrefabShadowNode[] {\n const nodes: PrefabShadowNode[] = [];\n const visit = (item: any, parentId: string | null) => {\n const nodeId = normalizePrefabNodeId(item?.nodeId ?? item?.id);\n const isNode = item?.itemType === 'prefab-node' || !!item?.nodeId || String(item?.id ?? '').startsWith(PREFAB_STAGE_ITEM_PREFIX);\n const currentParent = isNode && nodeId ? nodeId : parentId;\n if (isNode && nodeId) {\n nodes.push({\n id: nodeId,\n label: typeof item.label === 'string' ? item.label : nodeId,\n kind: typeof item.kind === 'string' ? item.kind : 'group',\n parentId,\n ...(isRecord(item.defaults) ? { defaults: structuredClone(item.defaults) } : {}),\n ...(isRecord(item.primitive) ? { primitive: structuredClone(item.primitive) } : {}),\n ...(isRecord(item.light) ? { light: structuredClone(item.light) } : {}),\n });\n }\n for (const child of Array.isArray(item?.children) ? item.children : []) visit(child, currentParent);\n };\n for (const item of details.structureItems) visit(item, null);\n return nodes;\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): EditorAgentBridgeJsonObject {\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 EditorAgentBridgeJsonObject } : {}),\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): EditorAgentBridgeDiagnostic {\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 normalizeAgentBridgeIdList(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: EditorAgentBridgeShadowResolvedPlan,\n receivers: readonly EditorAgentBridgeShadowReceiverCandidate[],\n shadowPreviewDebugInfo: LocalEditorAgentBridgeShadowPreviewDebugInfo | null | undefined,\n casterIds: ReadonlySet<string>,\n): EditorAgentBridgeShadowRuntimeEvidence {\n const diagnostics: EditorAgentBridgeDiagnostic[] = [];\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 if (plan.backend !== 'none' && receivers.length === 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 editor bridge session 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: receivers.length,\n ...createPlanarShadowRuntimeEvidence(shadowPreviewDebugInfo, casterIds),\n ...(plan.stale === true ? { artifactStale: true } : {}),\n ...(diagnostics.length ? { diagnostics } : {}),\n };\n}\n\nfunction createPlanarShadowRuntimeEvidence(\n shadowPreviewDebugInfo: LocalEditorAgentBridgeShadowPreviewDebugInfo | null | undefined,\n casterIds: ReadonlySet<string>,\n): { planar?: EditorAgentBridgeShadowRuntimeEvidence['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<LocalEditorAgentBridgeShadowPreviewDebugInfo['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<LocalEditorAgentBridgeShadowPreviewDebugInfo['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(plan: EditorShadowResolvedPlan): EditorAgentBridgeShadowResolvedPlan {\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: mapShadowDiagnostics(plan.diagnostics),\n };\n}\n\nfunction mapShadowReceivers<TDocument, TPatch>(\n receivers: readonly EditorShadowReceiverCandidate[],\n state: LocalEditorAgentBridgeHarnessState<TDocument, TPatch>,\n context: { casterId?: string; lightId?: string; projectionContext?: ShadowProjectionContext } = {},\n): EditorAgentBridgeShadowReceiverCandidate[] {\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 EditorAgentBridgeShadowReceiverCandidate['receive'] } : {}),\n ...(suitability ? { suitability } : {}),\n ...(diagnostics.length ? { diagnostics } : {}),\n };\n });\n}\n\nfunction createShadowReceiverSuitability(\n receiver: EditorShadowReceiverCandidate,\n casterBounds: AgentBridgeResolvedBounds | undefined,\n receiverBounds: AgentBridgeResolvedBounds | undefined,\n lightId: string | undefined,\n): NonNullable<EditorAgentBridgeShadowReceiverCandidate['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: LocalEditorAgentBridgeHarnessState<TDocument, TPatch>,\n projectionContext: ShadowProjectionContext = createIdentityShadowProjectionContext(),\n): EditorAgentBridgeShadowDebugTargetSummary {\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): EditorAgentBridgeShadowLightSummary | 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: EditorAgentBridgeDiagnostic[] = [];\n let direction: EditorAgentBridgeVec3 | undefined;\n let directionSource: EditorAgentBridgeShadowLightSummary['directionSource'] | undefined;\n const orientationDiagnostics: EditorAgentBridgeDiagnostic[] = [];\n if (light.light.type === 'directional') {\n direction = normalizeEditorSceneLightDirectionVector(light.light.direction) as EditorAgentBridgeVec3;\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: EditorAgentBridgeVec3): EditorAgentBridgeVec3 {\n return { x: value.x, y: value.y, z: value.z };\n}\n\nfunction cloneShadowVec3Json(value: EditorAgentBridgeVec3): EditorAgentBridgeJsonObject {\n return { x: value.x, y: value.y, z: value.z };\n}\n\nfunction createShadowFootprintSummary<TDocument, TPatch>(\n plan: EditorAgentBridgeShadowResolvedPlan,\n receivers: readonly EditorAgentBridgeShadowReceiverCandidate[],\n state: LocalEditorAgentBridgeHarnessState<TDocument, TPatch>,\n projectionContext: ShadowProjectionContext = createIdentityShadowProjectionContext(),\n light?: EditorAgentBridgeShadowLightSummary,\n): EditorAgentBridgeShadowFootprintSummary {\n if (plan.backend === 'none' || plan.receiverIds.length === 0) {\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 AgentBridgeResolvedBounds | 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: EditorAgentBridgeDiagnostic[] = [\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 selectShadowFootprintReceiver(\n plan: EditorAgentBridgeShadowResolvedPlan,\n receivers: readonly EditorAgentBridgeShadowReceiverCandidate[],\n): EditorAgentBridgeShadowReceiverCandidate | 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: EditorAgentBridgeShadowReceiverCandidate,\n right: EditorAgentBridgeShadowReceiverCandidate,\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: EditorAgentBridgeVec3 | undefined): EditorAgentBridgeVec3 | 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: AgentBridgeResolvedBounds,\n receiverBounds: AgentBridgeResolvedBounds,\n direction: EditorAgentBridgeVec3,\n): { center: EditorAgentBridgeVec3; size: EditorAgentBridgeVec3 } | null {\n if (Math.abs(direction.y) <= 1e-5) return null;\n const receiverY = receiverBounds.max.y;\n const points: EditorAgentBridgeVec3[] = [];\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: LocalEditorAgentBridgeHarnessState<TDocument, TPatch>,\n targetId: string,\n projectionContext: ShadowProjectionContext,\n): AgentBridgeResolvedBounds | undefined {\n const projectionId = projectionContext.resolveProjectionId(targetId);\n return createAgentBridgeBounds(state.projection?.getSelectionBounds([projectionId]) ?? null);\n}\n\nfunction readShadowPreviewEffectiveVisible<TDocument, TPatch>(\n state: LocalEditorAgentBridgeHarnessState<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 createAgentBridgeBounds(\n bounds: { center: { x: number; y: number; z: number }; size: { x: number; y: number; z: number } } | null,\n): AgentBridgeResolvedBounds | 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: AgentBridgeResolvedBounds,\n b: AgentBridgeResolvedBounds,\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[]): EditorAgentBridgeDiagnostic[] {\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): EditorAgentBridgeDiagnostic[] {\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 findPrefabRootNodeId<TDocument>(details: LocalEditorAgentBridgePrefabStageDetails<TDocument>): string {\n const nodes = listPrefabShadowNodes(details);\n return nodes.find(node => node.kind === 'root')?.id\n ?? nodes.find(node => !node.parentId)?.id\n ?? 'prefab-root';\n}\n\nfunction normalizePrefabNodeId(value: unknown): string {\n const id = normalizeAgentBridgeString(value);\n return id.startsWith(PREFAB_STAGE_ITEM_PREFIX) ? id.slice(PREFAB_STAGE_ITEM_PREFIX.length) : id;\n}\n\nfunction getSelectedPrefabNodeId(itemId: string | null | undefined): string {\n return normalizePrefabNodeId(itemId);\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"]}