@fps-games/editor 0.2.1-beta.1 → 0.2.1-beta.2

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 (245) hide show
  1. package/dist/agent-bridge/capabilities/ui-regions.d.ts.map +1 -1
  2. package/dist/agent-bridge/capabilities/ui-regions.js +16 -0
  3. package/dist/agent-bridge/capabilities/ui-regions.js.map +1 -1
  4. package/dist/build-info.json +43 -43
  5. package/dist/internal/material-preview.d.ts +22 -0
  6. package/dist/internal/material-preview.d.ts.map +1 -0
  7. package/dist/internal/material-preview.js +186 -0
  8. package/dist/internal/material-preview.js.map +1 -0
  9. package/dist/internal/project-model-preview.d.ts +4 -0
  10. package/dist/internal/project-model-preview.d.ts.map +1 -0
  11. package/dist/internal/project-model-preview.js +359 -0
  12. package/dist/internal/project-model-preview.js.map +1 -0
  13. package/dist/local-editor-agent-context.d.ts +12 -1
  14. package/dist/local-editor-agent-context.d.ts.map +1 -1
  15. package/dist/local-editor-agent-context.js +47 -0
  16. package/dist/local-editor-agent-context.js.map +1 -1
  17. package/dist/local-editor-harness.d.ts +15 -2
  18. package/dist/local-editor-harness.d.ts.map +1 -1
  19. package/dist/local-editor-harness.js +310 -21
  20. package/dist/local-editor-harness.js.map +1 -1
  21. package/dist/local-editor-tools.d.ts +1 -0
  22. package/dist/local-editor-tools.d.ts.map +1 -1
  23. package/dist/local-editor-tools.js +3 -0
  24. package/dist/local-editor-tools.js.map +1 -1
  25. package/dist/playable-local-editor-host.d.ts +4 -0
  26. package/dist/playable-local-editor-host.d.ts.map +1 -1
  27. package/dist/playable-local-editor-host.js +27 -0
  28. package/dist/playable-local-editor-host.js.map +1 -1
  29. package/dist/playable-product-scene-capabilities.d.ts.map +1 -1
  30. package/dist/playable-product-scene-capabilities.js +9 -3
  31. package/dist/playable-product-scene-capabilities.js.map +1 -1
  32. package/dist/playable-standard-project.d.ts.map +1 -1
  33. package/dist/playable-standard-project.js +5 -2
  34. package/dist/playable-standard-project.js.map +1 -1
  35. package/node_modules/@fps-games/babylon-renderer/package.json +7 -7
  36. package/node_modules/@fps-games/editor-babylon/dist/marker-overlay.js +24 -0
  37. package/node_modules/@fps-games/editor-babylon/dist/marker-overlay.js.map +1 -1
  38. package/node_modules/@fps-games/editor-babylon/dist/projection.d.ts +10 -1
  39. package/node_modules/@fps-games/editor-babylon/dist/projection.d.ts.map +1 -1
  40. package/node_modules/@fps-games/editor-babylon/dist/projection.js +96 -1
  41. package/node_modules/@fps-games/editor-babylon/dist/projection.js.map +1 -1
  42. package/node_modules/@fps-games/editor-babylon/dist/scene-view-spatial-overlay-controller.d.ts.map +1 -1
  43. package/node_modules/@fps-games/editor-babylon/dist/scene-view-spatial-overlay-controller.js +85 -22
  44. package/node_modules/@fps-games/editor-babylon/dist/scene-view-spatial-overlay-controller.js.map +1 -1
  45. package/node_modules/@fps-games/editor-babylon/dist/selection-presentation-controller.d.ts +2 -0
  46. package/node_modules/@fps-games/editor-babylon/dist/selection-presentation-controller.d.ts.map +1 -1
  47. package/node_modules/@fps-games/editor-babylon/dist/selection-presentation-controller.js +150 -4
  48. package/node_modules/@fps-games/editor-babylon/dist/selection-presentation-controller.js.map +1 -1
  49. package/node_modules/@fps-games/editor-babylon/dist/transform-gizmo-controller.d.ts +1 -0
  50. package/node_modules/@fps-games/editor-babylon/dist/transform-gizmo-controller.d.ts.map +1 -1
  51. package/node_modules/@fps-games/editor-babylon/dist/transform-gizmo-controller.js +249 -15
  52. package/node_modules/@fps-games/editor-babylon/dist/transform-gizmo-controller.js.map +1 -1
  53. package/node_modules/@fps-games/editor-babylon/dist/types.d.ts +1 -1
  54. package/node_modules/@fps-games/editor-babylon/dist/types.d.ts.map +1 -1
  55. package/node_modules/@fps-games/editor-babylon/dist/types.js.map +1 -1
  56. package/node_modules/@fps-games/editor-babylon/package.json +6 -6
  57. package/node_modules/@fps-games/editor-browser/dist/index.d.ts +5 -0
  58. package/node_modules/@fps-games/editor-browser/dist/index.d.ts.map +1 -1
  59. package/node_modules/@fps-games/editor-browser/dist/index.js +3 -0
  60. package/node_modules/@fps-games/editor-browser/dist/index.js.map +1 -1
  61. package/node_modules/@fps-games/editor-browser/dist/local-editor-asset-browser-continuity.d.ts +35 -0
  62. package/node_modules/@fps-games/editor-browser/dist/local-editor-asset-browser-continuity.d.ts.map +1 -0
  63. package/node_modules/@fps-games/editor-browser/dist/local-editor-asset-browser-continuity.js +136 -0
  64. package/node_modules/@fps-games/editor-browser/dist/local-editor-asset-browser-continuity.js.map +1 -0
  65. package/node_modules/@fps-games/editor-browser/dist/local-editor-asset-filesystem.d.ts +46 -0
  66. package/node_modules/@fps-games/editor-browser/dist/local-editor-asset-filesystem.d.ts.map +1 -0
  67. package/node_modules/@fps-games/editor-browser/dist/local-editor-asset-filesystem.js +283 -0
  68. package/node_modules/@fps-games/editor-browser/dist/local-editor-asset-filesystem.js.map +1 -0
  69. package/node_modules/@fps-games/editor-browser/dist/local-editor-preview-cleanup-registry.d.ts +12 -0
  70. package/node_modules/@fps-games/editor-browser/dist/local-editor-preview-cleanup-registry.d.ts.map +1 -0
  71. package/node_modules/@fps-games/editor-browser/dist/local-editor-preview-cleanup-registry.js +67 -0
  72. package/node_modules/@fps-games/editor-browser/dist/local-editor-preview-cleanup-registry.js.map +1 -0
  73. package/node_modules/@fps-games/editor-browser/dist/local-editor-project-file-open.d.ts +6 -0
  74. package/node_modules/@fps-games/editor-browser/dist/local-editor-project-file-open.d.ts.map +1 -0
  75. package/node_modules/@fps-games/editor-browser/dist/local-editor-project-file-open.js +9 -0
  76. package/node_modules/@fps-games/editor-browser/dist/local-editor-project-file-open.js.map +1 -0
  77. package/node_modules/@fps-games/editor-browser/dist/local-editor-project-file-preview.d.ts +7 -0
  78. package/node_modules/@fps-games/editor-browser/dist/local-editor-project-file-preview.d.ts.map +1 -0
  79. package/node_modules/@fps-games/editor-browser/dist/local-editor-project-file-preview.js +20 -0
  80. package/node_modules/@fps-games/editor-browser/dist/local-editor-project-file-preview.js.map +1 -0
  81. package/node_modules/@fps-games/editor-browser/dist/local-editor-project-media-thumbnail-cache.d.ts +9 -0
  82. package/node_modules/@fps-games/editor-browser/dist/local-editor-project-media-thumbnail-cache.d.ts.map +1 -0
  83. package/node_modules/@fps-games/editor-browser/dist/local-editor-project-media-thumbnail-cache.js +219 -0
  84. package/node_modules/@fps-games/editor-browser/dist/local-editor-project-media-thumbnail-cache.js.map +1 -0
  85. package/node_modules/@fps-games/editor-browser/dist/local-editor-tool-presentation.d.ts +14 -0
  86. package/node_modules/@fps-games/editor-browser/dist/local-editor-tool-presentation.d.ts.map +1 -0
  87. package/node_modules/@fps-games/editor-browser/dist/local-editor-tool-presentation.js +42 -0
  88. package/node_modules/@fps-games/editor-browser/dist/local-editor-tool-presentation.js.map +1 -0
  89. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-asset-kind.d.ts.map +1 -1
  90. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-asset-kind.js +2 -0
  91. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-asset-kind.js.map +1 -1
  92. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-console.d.ts +27 -0
  93. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-console.d.ts.map +1 -0
  94. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-console.js +288 -0
  95. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-console.js.map +1 -0
  96. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-icons.d.ts +1 -1
  97. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-icons.d.ts.map +1 -1
  98. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-icons.js +29 -0
  99. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-icons.js.map +1 -1
  100. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-panels.d.ts +20 -1
  101. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-panels.d.ts.map +1 -1
  102. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-panels.js +321 -60
  103. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-panels.js.map +1 -1
  104. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-prefab-stage.d.ts +2 -1
  105. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-prefab-stage.d.ts.map +1 -1
  106. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-prefab-stage.js +4 -2
  107. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-prefab-stage.js.map +1 -1
  108. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-types.d.ts +63 -3
  109. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-types.d.ts.map +1 -1
  110. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-types.js.map +1 -1
  111. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-workbench.d.ts +9 -0
  112. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-workbench.d.ts.map +1 -1
  113. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-workbench.js +88 -16
  114. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-workbench.js.map +1 -1
  115. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui.d.ts +2 -1
  116. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui.d.ts.map +1 -1
  117. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui.js +1463 -356
  118. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui.js.map +1 -1
  119. package/node_modules/@fps-games/editor-browser/dist/local-editor-viewport-orientation.d.ts +13 -0
  120. package/node_modules/@fps-games/editor-browser/dist/local-editor-viewport-orientation.d.ts.map +1 -0
  121. package/node_modules/@fps-games/editor-browser/dist/local-editor-viewport-orientation.js +15 -0
  122. package/node_modules/@fps-games/editor-browser/dist/local-editor-viewport-orientation.js.map +1 -0
  123. package/node_modules/@fps-games/editor-browser/package.json +7 -7
  124. package/node_modules/@fps-games/editor-core/dist/editor-tools.d.ts +1 -0
  125. package/node_modules/@fps-games/editor-core/dist/editor-tools.d.ts.map +1 -1
  126. package/node_modules/@fps-games/editor-core/dist/editor-tools.js +3 -1
  127. package/node_modules/@fps-games/editor-core/dist/editor-tools.js.map +1 -1
  128. package/node_modules/@fps-games/editor-core/dist/viewport-tools.d.ts +11 -2
  129. package/node_modules/@fps-games/editor-core/dist/viewport-tools.d.ts.map +1 -1
  130. package/node_modules/@fps-games/editor-core/dist/viewport-tools.js +12 -1
  131. package/node_modules/@fps-games/editor-core/dist/viewport-tools.js.map +1 -1
  132. package/node_modules/@fps-games/editor-core/package.json +6 -6
  133. package/node_modules/@fps-games/editor-forge-play/package.json +2 -2
  134. package/node_modules/@fps-games/editor-playable-sdk/dist/asset-library/catalog.d.ts +1 -0
  135. package/node_modules/@fps-games/editor-playable-sdk/dist/asset-library/catalog.d.ts.map +1 -1
  136. package/node_modules/@fps-games/editor-playable-sdk/dist/asset-library/catalog.js +5 -0
  137. package/node_modules/@fps-games/editor-playable-sdk/dist/asset-library/catalog.js.map +1 -1
  138. package/node_modules/@fps-games/editor-playable-sdk/dist/asset-library/index.d.ts +1 -1
  139. package/node_modules/@fps-games/editor-playable-sdk/dist/asset-library/index.d.ts.map +1 -1
  140. package/node_modules/@fps-games/editor-playable-sdk/dist/asset-library/index.js +1 -1
  141. package/node_modules/@fps-games/editor-playable-sdk/dist/asset-library/index.js.map +1 -1
  142. package/node_modules/@fps-games/editor-playable-sdk/dist/authoring-server/handler.d.ts.map +1 -1
  143. package/node_modules/@fps-games/editor-playable-sdk/dist/authoring-server/handler.js +15 -1
  144. package/node_modules/@fps-games/editor-playable-sdk/dist/authoring-server/handler.js.map +1 -1
  145. package/node_modules/@fps-games/editor-playable-sdk/dist/authoring-server/routes.d.ts.map +1 -1
  146. package/node_modules/@fps-games/editor-playable-sdk/dist/authoring-server/routes.js +3 -0
  147. package/node_modules/@fps-games/editor-playable-sdk/dist/authoring-server/routes.js.map +1 -1
  148. package/node_modules/@fps-games/editor-playable-sdk/dist/authoring-server/types.d.ts +6 -1
  149. package/node_modules/@fps-games/editor-playable-sdk/dist/authoring-server/types.d.ts.map +1 -1
  150. package/node_modules/@fps-games/editor-playable-sdk/dist/authoring-server/types.js.map +1 -1
  151. package/node_modules/@fps-games/editor-playable-sdk/dist/index.d.ts +1 -0
  152. package/node_modules/@fps-games/editor-playable-sdk/dist/index.d.ts.map +1 -1
  153. package/node_modules/@fps-games/editor-playable-sdk/dist/index.js +1 -0
  154. package/node_modules/@fps-games/editor-playable-sdk/dist/index.js.map +1 -1
  155. package/node_modules/@fps-games/editor-playable-sdk/dist/product/scene-source.d.ts +4 -0
  156. package/node_modules/@fps-games/editor-playable-sdk/dist/product/scene-source.d.ts.map +1 -1
  157. package/node_modules/@fps-games/editor-playable-sdk/dist/product/scene-source.js +10 -1
  158. package/node_modules/@fps-games/editor-playable-sdk/dist/product/scene-source.js.map +1 -1
  159. package/node_modules/@fps-games/editor-playable-sdk/dist/project-files/index.d.ts +4 -0
  160. package/node_modules/@fps-games/editor-playable-sdk/dist/project-files/index.d.ts.map +1 -0
  161. package/node_modules/@fps-games/editor-playable-sdk/dist/project-files/index.js +4 -0
  162. package/node_modules/@fps-games/editor-playable-sdk/dist/project-files/index.js.map +1 -0
  163. package/node_modules/@fps-games/editor-playable-sdk/dist/project-files/protocol.d.ts +4 -0
  164. package/node_modules/@fps-games/editor-playable-sdk/dist/project-files/protocol.d.ts.map +1 -0
  165. package/node_modules/@fps-games/editor-playable-sdk/dist/project-files/protocol.js +86 -0
  166. package/node_modules/@fps-games/editor-playable-sdk/dist/project-files/protocol.js.map +1 -0
  167. package/node_modules/@fps-games/editor-playable-sdk/dist/project-files/support.d.ts +9 -0
  168. package/node_modules/@fps-games/editor-playable-sdk/dist/project-files/support.d.ts.map +1 -0
  169. package/node_modules/@fps-games/editor-playable-sdk/dist/project-files/support.js +76 -0
  170. package/node_modules/@fps-games/editor-playable-sdk/dist/project-files/support.js.map +1 -0
  171. package/node_modules/@fps-games/editor-playable-sdk/dist/project-files/types.d.ts +34 -0
  172. package/node_modules/@fps-games/editor-playable-sdk/dist/project-files/types.d.ts.map +1 -0
  173. package/node_modules/@fps-games/editor-playable-sdk/dist/project-files/types.js +2 -0
  174. package/node_modules/@fps-games/editor-playable-sdk/dist/project-files/types.js.map +1 -0
  175. package/node_modules/@fps-games/editor-playable-sdk/dist/scene-source/client.d.ts +4 -0
  176. package/node_modules/@fps-games/editor-playable-sdk/dist/scene-source/client.d.ts.map +1 -1
  177. package/node_modules/@fps-games/editor-playable-sdk/dist/scene-source/client.js +40 -0
  178. package/node_modules/@fps-games/editor-playable-sdk/dist/scene-source/client.js.map +1 -1
  179. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/index.d.ts +1 -0
  180. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/index.d.ts.map +1 -1
  181. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/index.js +1 -0
  182. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/index.js.map +1 -1
  183. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/product-authoring-api.d.ts +1 -0
  184. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/product-authoring-api.d.ts.map +1 -1
  185. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/product-authoring-api.js +94 -0
  186. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/product-authoring-api.js.map +1 -1
  187. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/project-file-handle.d.ts +14 -0
  188. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/project-file-handle.d.ts.map +1 -0
  189. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/project-file-handle.js +101 -0
  190. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/project-file-handle.js.map +1 -0
  191. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/project-files.d.ts +23 -0
  192. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/project-files.d.ts.map +1 -0
  193. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/project-files.js +180 -0
  194. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/project-files.js.map +1 -0
  195. package/node_modules/@fps-games/editor-playable-sdk/package.json +6 -6
  196. package/node_modules/@fps-games/editor-protocol/dist/agent.d.ts +23 -3
  197. package/node_modules/@fps-games/editor-protocol/dist/agent.d.ts.map +1 -1
  198. package/node_modules/@fps-games/editor-protocol/dist/agent.js.map +1 -1
  199. package/node_modules/@fps-games/editor-protocol/package.json +2 -2
  200. package/node_modules/@fps-games/editor-tooling/package.json +3 -3
  201. package/node_modules/@fps-games/editor-ui/dist/editor-ui-theme.d.ts.map +1 -1
  202. package/node_modules/@fps-games/editor-ui/dist/editor-ui-theme.js +103 -10
  203. package/node_modules/@fps-games/editor-ui/dist/editor-ui-theme.js.map +1 -1
  204. package/node_modules/@fps-games/editor-ui/package.json +1 -1
  205. package/node_modules/@fps-games/playable-assets/package.json +1 -1
  206. package/node_modules/@fps-games/playable-contracts/package.json +1 -1
  207. package/node_modules/@fps-games/playable-rendering/package.json +2 -2
  208. package/node_modules/@fps-games/playable-runtime/package.json +12 -12
  209. package/node_modules/@fps-games/playable-runtime-data/package.json +4 -4
  210. package/node_modules/@fps-games/playable-scene/package.json +2 -2
  211. package/node_modules/@fps-games/plugin-api/package.json +1 -1
  212. package/node_modules/@fps-games/plugin-assets/dist/version.d.ts +1 -1
  213. package/node_modules/@fps-games/plugin-assets/dist/version.js +1 -1
  214. package/node_modules/@fps-games/plugin-assets/dist/version.js.map +1 -1
  215. package/node_modules/@fps-games/plugin-assets/package.json +5 -5
  216. package/node_modules/@fps-games/plugin-hierarchy/dist/version.d.ts +1 -1
  217. package/node_modules/@fps-games/plugin-hierarchy/dist/version.js +1 -1
  218. package/node_modules/@fps-games/plugin-hierarchy/dist/version.js.map +1 -1
  219. package/node_modules/@fps-games/plugin-hierarchy/package.json +5 -5
  220. package/node_modules/@fps-games/plugin-host/package.json +2 -2
  221. package/node_modules/@fps-games/plugin-markers/dist/version.d.ts +1 -1
  222. package/node_modules/@fps-games/plugin-markers/dist/version.js +1 -1
  223. package/node_modules/@fps-games/plugin-markers/dist/version.js.map +1 -1
  224. package/node_modules/@fps-games/plugin-markers/package.json +5 -5
  225. package/node_modules/@fps-games/plugin-materials/dist/version.d.ts +1 -1
  226. package/node_modules/@fps-games/plugin-materials/dist/version.js +1 -1
  227. package/node_modules/@fps-games/plugin-materials/dist/version.js.map +1 -1
  228. package/node_modules/@fps-games/plugin-materials/package.json +5 -5
  229. package/node_modules/@fps-games/plugin-rendering/dist/version.d.ts +1 -1
  230. package/node_modules/@fps-games/plugin-rendering/dist/version.js +1 -1
  231. package/node_modules/@fps-games/plugin-rendering/dist/version.js.map +1 -1
  232. package/node_modules/@fps-games/plugin-rendering/package.json +5 -5
  233. package/node_modules/@fps-games/plugin-scene/dist/version.d.ts +1 -1
  234. package/node_modules/@fps-games/plugin-scene/dist/version.js +1 -1
  235. package/node_modules/@fps-games/plugin-scene/dist/version.js.map +1 -1
  236. package/node_modules/@fps-games/plugin-scene/package.json +5 -5
  237. package/node_modules/@fps-games/plugin-shadow-map-experiment/dist/version.d.ts +1 -1
  238. package/node_modules/@fps-games/plugin-shadow-map-experiment/dist/version.js +1 -1
  239. package/node_modules/@fps-games/plugin-shadow-map-experiment/dist/version.js.map +1 -1
  240. package/node_modules/@fps-games/plugin-shadow-map-experiment/package.json +5 -5
  241. package/node_modules/@fps-games/plugin-shadows/dist/version.d.ts +1 -1
  242. package/node_modules/@fps-games/plugin-shadows/dist/version.js +1 -1
  243. package/node_modules/@fps-games/plugin-shadows/dist/version.js.map +1 -1
  244. package/node_modules/@fps-games/plugin-shadows/package.json +7 -7
  245. package/package.json +22 -22
@@ -1 +1 @@
1
- {"version":3,"file":"local-editor-agent-context.js","sourceRoot":"","sources":["../src/local-editor-agent-context.ts"],"names":[],"mappings":"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","sourcesContent":["import type { SceneGraphTreeItem } from '@fps-games/editor-core';\nimport {\n EDITOR_AGENT_CONTEXT_SCHEMA_VERSION,\n type EditorAgentBounds,\n type EditorAgentContextSemantics,\n type EditorAgentRegionBindingContext,\n type EditorAgentSceneObject,\n type EditorAgentSceneObjectContext,\n type EditorAgentSceneObjectSetContext,\n type EditorAgentSpatialMarkerContext,\n type EditorAgentSpatialRelationGraphContext,\n type EditorAgentSource,\n type EditorAgentTransform,\n type EditorAgentVec3,\n type ResolvedSpatialMarkerGraph,\n type ResolvedSpatialMarkerNode,\n type SpatialMarkerTypeDefinition,\n type SpatialRelation,\n type SpatialRelationTypeDefinition,\n} from '@fps-games/editor-protocol';\n\nexport interface LocalEditorAgentContextObjectInput<TDocument = unknown> {\n document: TDocument;\n objectId: string;\n hierarchyItems?: readonly SceneGraphTreeItem[];\n projectionNode?: unknown | null;\n source?: Partial<EditorAgentSource>;\n createdAt?: number;\n semantics?: EditorAgentContextSemantics | null;\n}\n\nexport interface LocalEditorAgentContextObjectSetInput<TDocument = unknown> {\n document: TDocument;\n objectIds: readonly string[];\n hierarchyItems?: readonly SceneGraphTreeItem[];\n projectionNodes?: Record<string, unknown | null | undefined>;\n source?: Partial<EditorAgentSource>;\n createdAt?: number;\n semantics?: EditorAgentContextSemantics | null;\n}\n\nexport interface LocalEditorAgentContextRegionBindingInput<TDocument = unknown>\n extends LocalEditorAgentContextObjectSetInput<TDocument> {\n regionLabel?: string;\n relationshipType?: string;\n relationshipDescription?: string;\n}\n\nexport interface LocalEditorAgentContextSpatialMarkerInput<TDocument = unknown> {\n document: TDocument;\n marker: ResolvedSpatialMarkerNode;\n graph?: ResolvedSpatialMarkerGraph | null;\n directRelations?: readonly SpatialRelation[];\n relatedMarkerIds?: readonly string[];\n relatedObjectIds?: readonly string[];\n hierarchyItems?: readonly SceneGraphTreeItem[];\n markerTypes?: readonly SpatialMarkerTypeDefinition[];\n relationTypes?: readonly SpatialRelationTypeDefinition[];\n source?: Partial<EditorAgentSource>;\n createdAt?: number;\n semantics?: EditorAgentContextSemantics | null;\n}\n\nexport interface LocalEditorAgentContextSpatialRelationGraphInput<TDocument = unknown> {\n document: TDocument;\n graph: ResolvedSpatialMarkerGraph;\n focusMarkerIds?: readonly string[];\n focusObjectIds?: readonly string[];\n hierarchyItems?: readonly SceneGraphTreeItem[];\n markerTypes?: readonly SpatialMarkerTypeDefinition[];\n relationTypes?: readonly SpatialRelationTypeDefinition[];\n source?: Partial<EditorAgentSource>;\n createdAt?: number;\n semantics?: EditorAgentContextSemantics | null;\n}\n\ninterface LocalEditorAgentSpatialRelationEndpointSummary {\n kind: string;\n id: string;\n label?: string;\n}\n\ninterface LocalEditorAgentSpatialRelationSummary {\n relationId?: string;\n relationType?: string;\n relationLabel?: string;\n directed?: boolean;\n from?: LocalEditorAgentSpatialRelationEndpointSummary;\n to?: LocalEditorAgentSpatialRelationEndpointSummary;\n summary: string;\n count?: number;\n}\n\ninterface LocalEditorAgentSpatialGraphIssue {\n code: string;\n severity: 'warning' | 'error';\n message: string;\n relationId?: string;\n markerId?: string;\n endpoint?: LocalEditorAgentSpatialRelationEndpointSummary;\n}\n\ninterface LocalEditorAgentSpatialRelationNeighborhood {\n markerId: string;\n markerLabel?: string;\n oneHopRelations: SpatialRelation[];\n relatedMarkerIds?: string[];\n relatedObjectIds?: string[];\n twoHopSummaries?: LocalEditorAgentSpatialRelationSummary[];\n localSummaries?: LocalEditorAgentSpatialRelationSummary[];\n graphIssues?: LocalEditorAgentSpatialGraphIssue[];\n}\n\nexport function createLocalEditorSceneObjectAgentContext<TDocument>(\n input: LocalEditorAgentContextObjectInput<TDocument>,\n): EditorAgentSceneObjectContext | null {\n const objectId = normalizeId(input.objectId);\n if (!objectId) return null;\n const hierarchyById = createHierarchyMap(input.hierarchyItems);\n const object = createAgentSceneObject(objectId, hierarchyById, input.projectionNode);\n const label = object.label ?? object.name ?? object.id;\n return {\n schemaVersion: EDITOR_AGENT_CONTEXT_SCHEMA_VERSION,\n id: createAgentContextId('scene-object', [objectId], input.createdAt),\n kind: 'scene-object',\n label,\n summary: summarizeSceneObject(object),\n createdAt: input.createdAt ?? Date.now(),\n source: createAgentSource('hierarchy', input.source),\n object,\n ...pickAgentSemantics(input.semantics),\n };\n}\n\nexport function createLocalEditorSceneObjectSetAgentContext<TDocument>(\n input: LocalEditorAgentContextObjectSetInput<TDocument>,\n): EditorAgentSceneObjectSetContext | null {\n const objectIds = normalizeIds(input.objectIds);\n if (objectIds.length === 0) return null;\n const hierarchyById = createHierarchyMap(input.hierarchyItems);\n const objects = objectIds.map(id => createAgentSceneObject(id, hierarchyById, input.projectionNodes?.[id]));\n return {\n schemaVersion: EDITOR_AGENT_CONTEXT_SCHEMA_VERSION,\n id: createAgentContextId('scene-object-set', objectIds, input.createdAt),\n kind: 'scene-object-set',\n label: `${objects.length} selected objects`,\n summary: summarizeSceneObjectSet(objects),\n createdAt: input.createdAt ?? Date.now(),\n source: createAgentSource('selection', input.source),\n objectIds,\n objects,\n ...pickAgentSemantics(input.semantics),\n };\n}\n\nexport function createLocalEditorRegionBindingAgentContext<TDocument>(\n input: LocalEditorAgentContextRegionBindingInput<TDocument>,\n): EditorAgentRegionBindingContext | null {\n const objectIds = normalizeIds(input.objectIds);\n if (objectIds.length === 0) return null;\n const hierarchyById = createHierarchyMap(input.hierarchyItems);\n const objects = objectIds.map(id => createAgentSceneObject(id, hierarchyById, input.projectionNodes?.[id]));\n const bounds = mergeAgentBounds(objects.map(object => object.bounds).filter((value): value is EditorAgentBounds => !!value));\n const label = input.regionLabel?.trim() || `${objects.length} objects region`;\n return {\n schemaVersion: EDITOR_AGENT_CONTEXT_SCHEMA_VERSION,\n id: createAgentContextId('region-binding', objectIds, input.createdAt),\n kind: 'region-binding',\n label,\n summary: summarizeRegionBinding(label, objects),\n createdAt: input.createdAt ?? Date.now(),\n source: createAgentSource('region-binding', input.source),\n region: {\n id: `region:${objectIds.join('+')}`,\n label,\n ...(bounds ? { bounds } : {}),\n objectIds,\n },\n relationship: {\n type: input.relationshipType?.trim() || 'selection-region',\n description: input.relationshipDescription?.trim()\n || 'The selected scene objects are being described to the Agent as a region relationship.',\n },\n ...pickAgentSemantics(input.semantics),\n };\n}\n\nexport function createLocalEditorSpatialMarkerAgentContext<TDocument>(\n input: LocalEditorAgentContextSpatialMarkerInput<TDocument>,\n): EditorAgentSpatialMarkerContext | null {\n const markerId = normalizeId(input.marker.id);\n if (!markerId || input.marker.spatial.status !== 'resolved') return null;\n const label = input.marker.label || markerId;\n const markerLabels = createMarkerLabelMap(input.graph?.markers ?? [input.marker]);\n const objectLabels = createObjectLabelMap(input.hierarchyItems);\n const relationTypes = input.relationTypes ?? [];\n const graph = input.graph ?? {\n schemaVersion: 1,\n markers: [input.marker],\n relations: input.directRelations ? [...input.directRelations] : [],\n };\n const relationNeighborhood = createSpatialRelationNeighborhood(\n markerId,\n label,\n graph,\n input.directRelations ?? [],\n input.relatedMarkerIds ?? [],\n input.relatedObjectIds ?? [],\n relationTypes,\n markerLabels,\n objectLabels,\n );\n const context = {\n schemaVersion: EDITOR_AGENT_CONTEXT_SCHEMA_VERSION,\n id: createAgentContextId('spatial-marker', [markerId], input.createdAt),\n kind: 'spatial-marker',\n label,\n summary: summarizeSpatialMarker(input.marker, input.directRelations ?? [], relationTypes, markerLabels, objectLabels, relationNeighborhood),\n createdAt: input.createdAt ?? Date.now(),\n source: createAgentSource('marker', input.source),\n marker: cloneResolvedSpatialMarker(input.marker),\n directRelations: input.directRelations?.map(cloneSpatialRelation) ?? [],\n ...(input.relatedMarkerIds?.length ? { relatedMarkerIds: [...input.relatedMarkerIds] } : {}),\n ...(input.relatedObjectIds?.length ? { relatedObjectIds: [...input.relatedObjectIds] } : {}),\n ...(input.markerTypes?.length ? { markerTypes: input.markerTypes.map(cloneMarkerTypeDefinition) } : {}),\n ...(input.relationTypes?.length ? { relationTypes: input.relationTypes.map(cloneRelationTypeDefinition) } : {}),\n relationNeighborhood,\n ...pickAgentSemantics(input.semantics),\n };\n return context as EditorAgentSpatialMarkerContext;\n}\n\nexport function createLocalEditorSpatialRelationGraphAgentContext<TDocument>(\n input: LocalEditorAgentContextSpatialRelationGraphInput<TDocument>,\n): EditorAgentSpatialRelationGraphContext | null {\n if (input.graph.markers.length === 0) return null;\n if (input.graph.markers.some(marker => marker.spatial.status !== 'resolved')) return null;\n const markerIds = input.graph.markers.map(marker => marker.id);\n const objectLabels = createObjectLabelMap(input.hierarchyItems);\n const markerLabels = createMarkerLabelMap(input.graph.markers);\n const relationTypes = input.relationTypes ?? [];\n const graphIssues = createSpatialGraphIssues(input.graph, markerLabels, objectLabels);\n const focusSummaries = createSpatialGraphFocusSummaries(\n input.graph,\n input.focusMarkerIds ?? [],\n input.focusObjectIds ?? [],\n relationTypes,\n markerLabels,\n objectLabels,\n );\n const context = {\n schemaVersion: EDITOR_AGENT_CONTEXT_SCHEMA_VERSION,\n id: createAgentContextId('spatial-relation-graph', markerIds, input.createdAt),\n kind: 'spatial-relation-graph',\n label: `${input.graph.markers.length} spatial markers`,\n summary: summarizeSpatialRelationGraph(input.graph, relationTypes, objectLabels, focusSummaries, graphIssues),\n createdAt: input.createdAt ?? Date.now(),\n source: createAgentSource('marker-graph', input.source),\n graph: cloneResolvedSpatialMarkerGraph(input.graph),\n ...(input.focusMarkerIds?.length ? { focusMarkerIds: [...input.focusMarkerIds] } : {}),\n ...(input.focusObjectIds?.length ? { focusObjectIds: [...input.focusObjectIds] } : {}),\n ...(input.markerTypes?.length ? { markerTypes: input.markerTypes.map(cloneMarkerTypeDefinition) } : {}),\n ...(input.relationTypes?.length ? { relationTypes: input.relationTypes.map(cloneRelationTypeDefinition) } : {}),\n ...(graphIssues.length ? { graphIssues } : {}),\n ...(focusSummaries.length ? { focusSummaries } : {}),\n ...pickAgentSemantics(input.semantics),\n };\n return context as EditorAgentSpatialRelationGraphContext;\n}\n\nfunction createAgentSceneObject(\n objectId: string,\n hierarchyById: Map<string, SceneGraphTreeItem>,\n projectionNode: unknown,\n): EditorAgentSceneObject {\n const hierarchyItem = hierarchyById.get(objectId) ?? null;\n const projection = readRecord(projectionNode);\n const name = readString(projection?.name) || hierarchyItem?.label || objectId;\n const object: EditorAgentSceneObject = {\n id: objectId,\n name,\n label: hierarchyItem?.label ?? name,\n hierarchyPath: createHierarchyPath(objectId, hierarchyById),\n };\n const objectKind = readObjectKind(hierarchyItem, projection);\n if (objectKind) object.objectKind = objectKind;\n const transform = readAgentTransform(projection?.transform);\n if (transform) object.transform = transform;\n const bounds = readAgentBounds(projection);\n if (bounds) object.bounds = bounds;\n const assetRefs = readAssetRefs(projection?.asset);\n if (assetRefs.length > 0) object.assetRefs = assetRefs;\n return object;\n}\n\nfunction createAgentContextId(kind: string, ids: readonly string[], createdAt = Date.now()): string {\n return `${kind}:${ids.join('+')}:${createdAt}`;\n}\n\nfunction createAgentSource(\n surface: EditorAgentSource['surface'],\n source: Partial<EditorAgentSource> | undefined,\n): EditorAgentSource {\n return {\n editor: 'fps-game-editor',\n surface,\n ...(source?.projectId ? { projectId: source.projectId } : {}),\n ...(source?.projectName ? { projectName: source.projectName } : {}),\n };\n}\n\nfunction createHierarchyMap(items: readonly SceneGraphTreeItem[] | undefined): Map<string, SceneGraphTreeItem> {\n return new Map((items ?? []).map(item => [item.id, item]));\n}\n\nfunction createObjectLabelMap(items: readonly SceneGraphTreeItem[] | undefined): Map<string, string> {\n return new Map((items ?? [])\n .filter(item => item.role === undefined || item.role === 'object')\n .map(item => [item.id, item.label || item.id]));\n}\n\nfunction createMarkerLabelMap(markers: readonly ResolvedSpatialMarkerNode[]): Map<string, string> {\n return new Map(markers.map(marker => [marker.id, marker.label || marker.id]));\n}\n\nfunction createHierarchyPath(objectId: string, byId: Map<string, SceneGraphTreeItem>): string | undefined {\n const path: string[] = [];\n const seen = new Set<string>();\n let cursor = byId.get(objectId) ?? null;\n while (cursor && !seen.has(cursor.id)) {\n seen.add(cursor.id);\n path.unshift(cursor.label || cursor.id);\n cursor = cursor.parentId ? byId.get(cursor.parentId) ?? null : null;\n }\n return path.length > 0 ? path.join(' / ') : undefined;\n}\n\nfunction readObjectKind(\n hierarchyItem: SceneGraphTreeItem | null,\n projection: Record<string, unknown> | null,\n): string | undefined {\n const runtimeKind = readString(projection?.runtimeKind);\n if (runtimeKind) return runtimeKind;\n const helperKind = readString(projection?.helperKind);\n if (helperKind) return helperKind;\n const primitive = readRecord(projection?.primitive);\n const primitiveShape = readString(primitive?.shape);\n if (primitiveShape) return `primitive:${primitiveShape}`;\n const asset = readRecord(projection?.asset);\n if (asset) return 'asset';\n return hierarchyItem?.role;\n}\n\nfunction readAgentTransform(value: unknown): EditorAgentTransform | undefined {\n const record = readRecord(value);\n if (!record) return undefined;\n const position = readVec3(record.position);\n const rotation = readVec3(record.rotation);\n const scale = readVec3(record.scale);\n if (!position && !rotation && !scale) return undefined;\n return {\n ...(position ? { position } : {}),\n ...(rotation ? { rotation } : {}),\n ...(scale ? { scale } : {}),\n };\n}\n\nfunction readAgentBounds(value: unknown): EditorAgentBounds | undefined {\n const record = readRecord(value);\n if (!record) return undefined;\n const boundsRecord = readRecord(record.bounds) ?? record;\n const min = readVec3(boundsRecord.min);\n const max = readVec3(boundsRecord.max);\n const size = readVec3(boundsRecord.size);\n const center = readVec3(boundsRecord.center);\n if (!min && !max && !size && !center) return undefined;\n return {\n ...(min ? { min } : {}),\n ...(max ? { max } : {}),\n ...(size ? { size } : {}),\n ...(center ? { center } : {}),\n };\n}\n\nfunction mergeAgentBounds(boundsList: readonly EditorAgentBounds[]): EditorAgentBounds | undefined {\n const minMaxBounds = boundsList\n .map(bounds => bounds.min && bounds.max ? { min: bounds.min, max: bounds.max } : null)\n .filter((bounds): bounds is { min: EditorAgentVec3; max: EditorAgentVec3 } => !!bounds);\n if (minMaxBounds.length === 0) return undefined;\n const min = {\n x: Math.min(...minMaxBounds.map(bounds => bounds.min.x)),\n y: Math.min(...minMaxBounds.map(bounds => bounds.min.y)),\n z: Math.min(...minMaxBounds.map(bounds => bounds.min.z)),\n };\n const max = {\n x: Math.max(...minMaxBounds.map(bounds => bounds.max.x)),\n y: Math.max(...minMaxBounds.map(bounds => bounds.max.y)),\n z: Math.max(...minMaxBounds.map(bounds => bounds.max.z)),\n };\n return {\n min,\n max,\n size: {\n x: max.x - min.x,\n y: max.y - min.y,\n z: max.z - min.z,\n },\n center: {\n x: (min.x + max.x) / 2,\n y: (min.y + max.y) / 2,\n z: (min.z + max.z) / 2,\n },\n };\n}\n\nfunction readAssetRefs(value: unknown): string[] {\n const asset = readRecord(value);\n if (!asset) return [];\n return [readString(asset.id), readString(asset.sourceId)].filter((ref): ref is string => !!ref);\n}\n\nfunction readVec3(value: unknown): EditorAgentVec3 | undefined {\n const record = readRecord(value);\n if (!record) return undefined;\n const x = readFiniteNumber(record.x);\n const y = readFiniteNumber(record.y);\n const z = readFiniteNumber(record.z);\n return x == null || y == null || z == null ? undefined : { x, y, z };\n}\n\nfunction readRecord(value: unknown): Record<string, unknown> | null {\n return value && typeof value === 'object' ? value as Record<string, unknown> : null;\n}\n\nfunction readString(value: unknown): string | undefined {\n return typeof value === 'string' && value.trim() ? value.trim() : undefined;\n}\n\nfunction readFiniteNumber(value: unknown): number | undefined {\n return typeof value === 'number' && Number.isFinite(value) ? value : undefined;\n}\n\nfunction normalizeId(value: string): string | null {\n const id = value.trim();\n return id || null;\n}\n\nfunction normalizeIds(values: readonly string[]): string[] {\n return [...new Set(values.map(value => value.trim()).filter(Boolean))];\n}\n\nfunction pickAgentSemantics(value: EditorAgentContextSemantics | null | undefined): EditorAgentContextSemantics {\n if (!value) return {};\n return {\n ...(value.domainKind ? { domainKind: value.domainKind } : {}),\n ...(value.domainRole ? { domainRole: value.domainRole } : {}),\n ...(value.functionLabel ? { functionLabel: value.functionLabel } : {}),\n ...(value.functionDescription ? { functionDescription: value.functionDescription } : {}),\n ...(value.domainHints ? { domainHints: value.domainHints } : {}),\n ...(value.bindingCandidates ? { bindingCandidates: value.bindingCandidates } : {}),\n ...(value.sourceRefs ? { sourceRefs: value.sourceRefs } : {}),\n ...(value.relationshipHints ? { relationshipHints: value.relationshipHints } : {}),\n ...(value.metadata ? { metadata: value.metadata } : {}),\n };\n}\n\nfunction summarizeSceneObject(object: EditorAgentSceneObject): string {\n return [\n `Scene Object: ${object.label ?? object.name ?? object.id}`,\n `id: ${object.id}`,\n ...(object.hierarchyPath ? [`path: ${object.hierarchyPath}`] : []),\n ...(object.objectKind ? [`kind: ${object.objectKind}`] : []),\n ].join('\\n');\n}\n\nfunction summarizeSceneObjectSet(objects: readonly EditorAgentSceneObject[]): string {\n return [\n `Scene Object Set: ${objects.length} objects`,\n ...objects.map(object => `- ${object.label ?? object.name ?? object.id} (${object.id})`),\n ].join('\\n');\n}\n\nfunction summarizeRegionBinding(label: string, objects: readonly EditorAgentSceneObject[]): string {\n return [\n `Region Binding: ${label}`,\n `objects: ${objects.length}`,\n ...objects.map(object => `- ${object.label ?? object.name ?? object.id} (${object.id})`),\n ].join('\\n');\n}\n\nfunction summarizeSpatialMarker(\n marker: ResolvedSpatialMarkerNode,\n relations: readonly SpatialRelation[],\n relationTypes: readonly SpatialRelationTypeDefinition[],\n markerLabels: ReadonlyMap<string, string>,\n objectLabels: ReadonlyMap<string, string>,\n neighborhood?: LocalEditorAgentSpatialRelationNeighborhood,\n): string {\n const relationLabels = new Map(relationTypes.map(definition => [definition.type, definition.label]));\n return [\n `Spatial Marker: ${marker.label || marker.id}`,\n `id: ${marker.id}`,\n `type: ${marker.markerType}`,\n `kind: ${marker.kind}`,\n `spatial: ${summarizeSpatialFacts(marker)}`,\n ...(relations.length > 0\n ? [`relations: ${relations.map(relation => summarizeSpatialRelation(relation, relationLabels, markerLabels, objectLabels)).join('; ')}`]\n : []),\n ...(neighborhood?.localSummaries?.length\n ? [`local summary: ${neighborhood.localSummaries.map(summary => summary.summary).join('; ')}`]\n : []),\n ...(neighborhood?.twoHopSummaries?.length\n ? [`two-hop context: ${neighborhood.twoHopSummaries.map(summary => summary.summary).join('; ')}`]\n : []),\n ...(neighborhood?.graphIssues?.length\n ? [`warnings: ${neighborhood.graphIssues.map(issue => issue.message).join('; ')}`]\n : []),\n ].join('\\n');\n}\n\nfunction summarizeSpatialRelationGraph(\n graph: ResolvedSpatialMarkerGraph,\n relationTypes: readonly SpatialRelationTypeDefinition[],\n objectLabels: ReadonlyMap<string, string>,\n focusSummaries: readonly LocalEditorAgentSpatialRelationSummary[] = [],\n graphIssues: readonly LocalEditorAgentSpatialGraphIssue[] = [],\n): string {\n const relationLabels = new Map(relationTypes.map(definition => [definition.type, definition.label]));\n const markerLabels = createMarkerLabelMap(graph.markers);\n return [\n `Spatial Relation Graph: ${graph.markers.length} markers, ${graph.relations.length} relations`,\n ...graph.markers.map(marker => `- ${marker.label || marker.id} (${marker.id}): ${summarizeSpatialFacts(marker)}`),\n ...(graph.relations.length > 0\n ? [`Relations: ${graph.relations.map(relation => summarizeSpatialRelation(relation, relationLabels, markerLabels, objectLabels)).join('; ')}`]\n : []),\n ...(focusSummaries.length > 0\n ? [`Focus summaries: ${focusSummaries.map(summary => summary.summary).join('; ')}`]\n : []),\n ...(graphIssues.length > 0\n ? [`Graph warnings: ${graphIssues.map(issue => issue.message).join('; ')}`]\n : []),\n ].join('\\n');\n}\n\nfunction createSpatialRelationNeighborhood(\n markerId: string,\n markerLabel: string,\n graph: ResolvedSpatialMarkerGraph,\n directRelations: readonly SpatialRelation[],\n relatedMarkerIds: readonly string[],\n relatedObjectIds: readonly string[],\n relationTypes: readonly SpatialRelationTypeDefinition[],\n markerLabels: ReadonlyMap<string, string>,\n objectLabels: ReadonlyMap<string, string>,\n): LocalEditorAgentSpatialRelationNeighborhood {\n const issues = createSpatialGraphIssues(graph, markerLabels, objectLabels)\n .filter(issue => issue.markerId === markerId || graph.relations.some(relation => (\n relation.id === issue.relationId && relationTouchesMarker(relation, markerId)\n )));\n return {\n markerId,\n markerLabel,\n oneHopRelations: directRelations.map(cloneSpatialRelation),\n ...(relatedMarkerIds.length ? { relatedMarkerIds: [...relatedMarkerIds] } : {}),\n ...(relatedObjectIds.length ? { relatedObjectIds: [...relatedObjectIds] } : {}),\n localSummaries: createMarkerLocalRelationSummaries(markerId, markerLabel, directRelations, relationTypes, markerLabels, objectLabels),\n twoHopSummaries: createTwoHopRelationSummaries(markerId, graph, directRelations, relationTypes, markerLabels, objectLabels),\n ...(issues.length ? { graphIssues: issues } : {}),\n };\n}\n\nfunction createSpatialGraphFocusSummaries(\n graph: ResolvedSpatialMarkerGraph,\n focusMarkerIds: readonly string[],\n focusObjectIds: readonly string[],\n relationTypes: readonly SpatialRelationTypeDefinition[],\n markerLabels: ReadonlyMap<string, string>,\n objectLabels: ReadonlyMap<string, string>,\n): LocalEditorAgentSpatialRelationSummary[] {\n const summaries: LocalEditorAgentSpatialRelationSummary[] = [];\n const focusMarkers = focusMarkerIds.length > 0\n ? focusMarkerIds\n : graph.markers.slice(0, 3).map(marker => marker.id);\n for (const markerId of focusMarkers) {\n const marker = graph.markers.find(candidate => candidate.id === markerId) ?? null;\n if (!marker) continue;\n const directRelations = graph.relations.filter(relation => relationTouchesMarker(relation, markerId));\n summaries.push(...createMarkerLocalRelationSummaries(\n markerId,\n marker.label || marker.id,\n directRelations,\n relationTypes,\n markerLabels,\n objectLabels,\n ));\n }\n if (focusObjectIds.length > 0) {\n const relationLabels = new Map(relationTypes.map(definition => [definition.type, definition.label]));\n for (const objectId of focusObjectIds) {\n const relations = graph.relations.filter(relation => relationTouchesObject(relation, objectId));\n if (relations.length === 0) continue;\n summaries.push({\n summary: `${formatEndpointHumanLabel({ kind: 'scene-object', id: objectId }, markerLabels, objectLabels)} has ${relations.length} direct marker relations: ${relations.map(relation => summarizeSpatialRelation(relation, relationLabels, markerLabels, objectLabels)).join('; ')}`,\n count: relations.length,\n });\n }\n }\n return summaries;\n}\n\nfunction createMarkerLocalRelationSummaries(\n markerId: string,\n markerLabel: string,\n relations: readonly SpatialRelation[],\n relationTypes: readonly SpatialRelationTypeDefinition[],\n markerLabels: ReadonlyMap<string, string>,\n objectLabels: ReadonlyMap<string, string>,\n): LocalEditorAgentSpatialRelationSummary[] {\n const relationTypeLabels = new Map(relationTypes.map(definition => [definition.type, definition.label]));\n const groups = new Map<string, { type: string; label: string; count: number; endpoints: LocalEditorAgentSpatialRelationEndpointSummary[] }>();\n for (const relation of relations) {\n const related = relation.from.kind === 'marker' && relation.from.id === markerId ? relation.to : relation.from;\n const label = relation.label || relationTypeLabels.get(relation.type) || relation.type;\n const group = groups.get(relation.type) ?? { type: relation.type, label, count: 0, endpoints: [] };\n group.count += 1;\n group.endpoints.push(createEndpointSummary(related, markerLabels, objectLabels));\n groups.set(relation.type, group);\n }\n return [...groups.values()].map(group => ({\n relationType: group.type,\n relationLabel: group.label,\n count: group.count,\n summary: `${markerLabel} ${formatRelationCountPhrase(group.label, group.type, group.count)}: ${group.endpoints.slice(0, 6).map(formatEndpointSummary).join(', ')}${group.endpoints.length > 6 ? `, +${group.endpoints.length - 6} more` : ''}`,\n }));\n}\n\nfunction createTwoHopRelationSummaries(\n markerId: string,\n graph: ResolvedSpatialMarkerGraph,\n directRelations: readonly SpatialRelation[],\n relationTypes: readonly SpatialRelationTypeDefinition[],\n markerLabels: ReadonlyMap<string, string>,\n objectLabels: ReadonlyMap<string, string>,\n): LocalEditorAgentSpatialRelationSummary[] {\n const directRelationIds = new Set(directRelations.map(relation => relation.id));\n const neighborMarkerIds = new Set<string>();\n for (const relation of directRelations) {\n for (const endpoint of [relation.from, relation.to]) {\n if (endpoint.kind === 'marker' && endpoint.id !== markerId) neighborMarkerIds.add(endpoint.id);\n }\n }\n const relationLabels = new Map(relationTypes.map(definition => [definition.type, definition.label]));\n const summaries: LocalEditorAgentSpatialRelationSummary[] = [];\n for (const neighborId of neighborMarkerIds) {\n const secondHop = graph.relations.filter(relation => relationTouchesMarker(relation, neighborId) && !directRelationIds.has(relation.id));\n if (secondHop.length === 0) continue;\n const neighborLabel = markerLabels.get(neighborId) ?? neighborId;\n summaries.push({\n from: { kind: 'marker', id: neighborId, label: markerLabels.get(neighborId) },\n count: secondHop.length,\n summary: `${neighborLabel} has ${secondHop.length} additional relations: ${secondHop.slice(0, 5).map(relation => summarizeSpatialRelation(relation, relationLabels, markerLabels, objectLabels)).join('; ')}${secondHop.length > 5 ? `; +${secondHop.length - 5} more` : ''}`,\n });\n }\n return summaries;\n}\n\nfunction createSpatialGraphIssues(\n graph: ResolvedSpatialMarkerGraph,\n markerLabels: ReadonlyMap<string, string>,\n objectLabels: ReadonlyMap<string, string>,\n): LocalEditorAgentSpatialGraphIssue[] {\n const markerIds = new Set(graph.markers.map(marker => marker.id));\n const issues: LocalEditorAgentSpatialGraphIssue[] = [];\n for (const marker of graph.markers) {\n if (marker.spatial.status !== 'resolved') {\n issues.push({\n code: 'marker-spatial-unresolved',\n severity: 'warning',\n markerId: marker.id,\n message: `${marker.label || marker.id} has unresolved spatial facts${marker.spatial.unresolvedReason ? `: ${marker.spatial.unresolvedReason}` : ''}.`,\n });\n }\n for (const target of collectMarkerSpatialTargets(marker)) {\n if (target.kind === 'scene-object' && !objectLabels.has(target.id)) {\n issues.push({\n code: 'marker-missing-object-target',\n severity: 'warning',\n markerId: marker.id,\n endpoint: createEndpointSummary({ kind: target.kind, id: target.id, label: target.label }, markerLabels, objectLabels),\n message: `${marker.label || marker.id} references missing target scene object ${target.id}.`,\n });\n }\n }\n }\n for (const relation of graph.relations) {\n for (const [side, endpoint] of [['from', relation.from], ['to', relation.to]] as const) {\n if (endpoint.kind === 'marker' && !markerIds.has(endpoint.id)) {\n issues.push({\n code: 'relation-missing-marker-endpoint',\n severity: 'warning',\n relationId: relation.id,\n endpoint: createEndpointSummary(endpoint, markerLabels, objectLabels),\n message: `Relation ${relation.id} ${side} endpoint references missing marker ${endpoint.id}.`,\n });\n }\n if (endpoint.kind === 'scene-object' && !objectLabels.has(endpoint.id)) {\n issues.push({\n code: 'relation-missing-object-endpoint',\n severity: 'warning',\n relationId: relation.id,\n endpoint: createEndpointSummary(endpoint, markerLabels, objectLabels),\n message: `Relation ${relation.id} ${side} endpoint references missing scene object ${endpoint.id}.`,\n });\n }\n }\n }\n return issues;\n}\n\nfunction collectMarkerSpatialTargets(marker: ResolvedSpatialMarkerNode): SpatialRelation['from'][] {\n const targets: SpatialRelation['from'][] = [];\n const pushTarget = (target: ResolvedSpatialMarkerNode['target'] | undefined) => {\n if (!target || targets.some(candidate => candidate.kind === target.kind && candidate.id === target.id)) return;\n targets.push({\n kind: target.kind,\n id: target.id,\n ...(target.label ? { label: target.label } : {}),\n });\n };\n pushTarget(marker.target);\n pushTarget(marker.spatial.target);\n if (marker.geometry.kind === 'point' || marker.geometry.kind === 'object-bounds') pushTarget(marker.geometry.target);\n return targets;\n}\n\nfunction relationTouchesMarker(relation: SpatialRelation, markerId: string): boolean {\n return (relation.from.kind === 'marker' && relation.from.id === markerId)\n || (relation.to.kind === 'marker' && relation.to.id === markerId);\n}\n\nfunction relationTouchesObject(relation: SpatialRelation, objectId: string): boolean {\n return (relation.from.kind === 'scene-object' && relation.from.id === objectId)\n || (relation.to.kind === 'scene-object' && relation.to.id === objectId);\n}\n\nfunction createEndpointSummary(\n endpoint: SpatialRelation['from'],\n markerLabels: ReadonlyMap<string, string>,\n objectLabels: ReadonlyMap<string, string>,\n): LocalEditorAgentSpatialRelationEndpointSummary {\n const label = endpoint.label\n || (endpoint.kind === 'marker'\n ? markerLabels.get(endpoint.id)\n : endpoint.kind === 'scene-object'\n ? objectLabels.get(endpoint.id)\n : undefined);\n return {\n kind: endpoint.kind,\n id: endpoint.id,\n ...(label ? { label } : {}),\n };\n}\n\nfunction formatEndpointSummary(endpoint: LocalEditorAgentSpatialRelationEndpointSummary): string {\n return endpoint.label && endpoint.label !== endpoint.id\n ? `${endpoint.kind}:${endpoint.id} \"${endpoint.label}\"`\n : `${endpoint.kind}:${endpoint.id}`;\n}\n\nfunction formatEndpointHumanLabel(\n endpoint: SpatialRelation['from'],\n markerLabels: ReadonlyMap<string, string>,\n objectLabels: ReadonlyMap<string, string>,\n): string {\n const summary = createEndpointSummary(endpoint, markerLabels, objectLabels);\n return summary.label || summary.id;\n}\n\nfunction formatRelationCountPhrase(label: string, type: string, count: number): string {\n return `${label || type} ${count}`;\n}\n\nfunction summarizeSpatialFacts(marker: ResolvedSpatialMarkerNode): string {\n const spatial = marker.spatial;\n if (spatial.status !== 'resolved') return `unresolved${spatial.unresolvedReason ? `: ${spatial.unresolvedReason}` : ''}`;\n const parts = [\n spatial.origin ? `origin ${formatVec3(spatial.origin)}` : null,\n spatial.localFrame?.forward ? `forward ${formatVec3(spatial.localFrame.forward)}` : null,\n spatial.dimensions ? `dimensions ${formatVec3(spatial.dimensions)}` : null,\n spatial.bounds ? `bounds center ${formatVec3(spatial.bounds.center)} size ${formatVec3(spatial.bounds.size)}` : null,\n spatial.target ? `target ${summarizeSpatialRelationEndpoint({\n kind: spatial.target.kind,\n id: spatial.target.id,\n ...(spatial.target.label ? { label: spatial.target.label } : {}),\n }, new Map(), new Map())}` : null,\n ].filter((value): value is string => !!value);\n return parts.join(', ') || 'resolved';\n}\n\nfunction summarizeSpatialRelation(\n relation: SpatialRelation,\n relationLabels: ReadonlyMap<string, string>,\n markerLabels: ReadonlyMap<string, string>,\n objectLabels: ReadonlyMap<string, string>,\n): string {\n const arrow = relation.directed === false ? '--' : '->';\n return [\n summarizeSpatialRelationEndpoint(relation.from, markerLabels, objectLabels),\n summarizeSpatialRelationType(relation, relationLabels),\n arrow,\n summarizeSpatialRelationEndpoint(relation.to, markerLabels, objectLabels),\n ].join(' ');\n}\n\nfunction summarizeSpatialRelationEndpoint(\n endpoint: SpatialRelation['from'],\n markerLabels: ReadonlyMap<string, string>,\n objectLabels: ReadonlyMap<string, string>,\n): string {\n const label = endpoint.label\n || (endpoint.kind === 'marker'\n ? markerLabels.get(endpoint.id)\n : endpoint.kind === 'scene-object'\n ? objectLabels.get(endpoint.id)\n : undefined);\n return label && label !== endpoint.id\n ? `${endpoint.kind}:${endpoint.id} \"${label}\"`\n : `${endpoint.kind}:${endpoint.id}`;\n}\n\nfunction summarizeSpatialRelationType(\n relation: SpatialRelation,\n relationLabels: ReadonlyMap<string, string>,\n): string {\n const label = relation.label || relationLabels.get(relation.type);\n return label && label !== relation.type ? `${label} [${relation.type}]` : relation.type;\n}\n\nfunction formatVec3(value: EditorAgentVec3): string {\n return `(${value.x}, ${value.y}, ${value.z})`;\n}\n\nfunction cloneResolvedSpatialMarkerGraph(graph: ResolvedSpatialMarkerGraph): ResolvedSpatialMarkerGraph {\n return {\n ...graph,\n markers: graph.markers.map(cloneResolvedSpatialMarker),\n relations: graph.relations.map(cloneSpatialRelation),\n metadata: graph.metadata ? { ...graph.metadata } : undefined,\n };\n}\n\nfunction cloneResolvedSpatialMarker(marker: ResolvedSpatialMarkerNode): ResolvedSpatialMarkerNode {\n return {\n ...marker,\n geometry: cloneJsonObject(marker.geometry) as ResolvedSpatialMarkerNode['geometry'],\n target: marker.target ? { ...marker.target, metadata: marker.target.metadata ? { ...marker.target.metadata } : undefined } : undefined,\n semanticFrame: marker.semanticFrame ? { ...marker.semanticFrame } : undefined,\n tags: marker.tags ? [...marker.tags] : undefined,\n metadata: marker.metadata ? { ...marker.metadata } : undefined,\n spatial: {\n ...marker.spatial,\n origin: marker.spatial.origin ? { ...marker.spatial.origin } : undefined,\n bounds: marker.spatial.bounds\n ? {\n min: { ...marker.spatial.bounds.min },\n max: { ...marker.spatial.bounds.max },\n center: { ...marker.spatial.bounds.center },\n size: { ...marker.spatial.bounds.size },\n }\n : undefined,\n dimensions: marker.spatial.dimensions ? { ...marker.spatial.dimensions } : undefined,\n corners: marker.spatial.corners?.map(corner => ({ ...corner })),\n localFrame: marker.spatial.localFrame ? { ...marker.spatial.localFrame } : undefined,\n target: marker.spatial.target\n ? {\n ...marker.spatial.target,\n metadata: marker.spatial.target.metadata ? { ...marker.spatial.target.metadata } : undefined,\n }\n : undefined,\n metadata: marker.spatial.metadata ? { ...marker.spatial.metadata } : undefined,\n },\n };\n}\n\nfunction cloneSpatialRelation(relation: SpatialRelation): SpatialRelation {\n return {\n ...relation,\n from: { ...relation.from },\n to: { ...relation.to },\n tags: relation.tags ? [...relation.tags] : undefined,\n metadata: relation.metadata ? { ...relation.metadata } : undefined,\n };\n}\n\nfunction cloneMarkerTypeDefinition(definition: SpatialMarkerTypeDefinition): SpatialMarkerTypeDefinition {\n return {\n ...definition,\n defaultTags: definition.defaultTags ? [...definition.defaultTags] : undefined,\n metadata: definition.metadata ? { ...definition.metadata } : undefined,\n };\n}\n\nfunction cloneRelationTypeDefinition(definition: SpatialRelationTypeDefinition): SpatialRelationTypeDefinition {\n return {\n ...definition,\n allowedFromKinds: definition.allowedFromKinds ? [...definition.allowedFromKinds] : undefined,\n allowedToKinds: definition.allowedToKinds ? [...definition.allowedToKinds] : undefined,\n metadata: definition.metadata ? { ...definition.metadata } : undefined,\n };\n}\n\nfunction cloneJsonObject<T>(value: T): T {\n if (!value || typeof value !== 'object') return value;\n return JSON.parse(JSON.stringify(value)) as T;\n}\n"]}
1
+ {"version":3,"file":"local-editor-agent-context.js","sourceRoot":"","sources":["../src/local-editor-agent-context.ts"],"names":[],"mappings":"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","sourcesContent":["import type { SceneGraphTreeItem } from '@fps-games/editor-core';\nimport {\n EDITOR_AGENT_CONTEXT_SCHEMA_VERSION,\n type EditorAgentBounds,\n type EditorAgentContextSemantics,\n type EditorAgentProjectDirectoryContext,\n type EditorAgentProjectFileContext,\n type EditorAgentRegionBindingContext,\n type EditorAgentSceneObject,\n type EditorAgentSceneObjectContext,\n type EditorAgentSceneObjectSetContext,\n type EditorAgentSpatialMarkerContext,\n type EditorAgentSpatialRelationGraphContext,\n type EditorAgentSource,\n type EditorAgentTransform,\n type EditorAgentVec3,\n type ResolvedSpatialMarkerGraph,\n type ResolvedSpatialMarkerNode,\n type SpatialMarkerTypeDefinition,\n type SpatialRelation,\n type SpatialRelationTypeDefinition,\n} from '@fps-games/editor-protocol';\n\nexport interface LocalEditorAgentContextProjectEntryInput {\n path: string;\n name?: string;\n entryKind: 'file' | 'directory';\n extension?: string;\n assetId?: string;\n assetKind?: string;\n source?: Partial<EditorAgentSource>;\n createdAt?: number;\n}\n\nexport interface LocalEditorAgentContextObjectInput<TDocument = unknown> {\n document: TDocument;\n objectId: string;\n hierarchyItems?: readonly SceneGraphTreeItem[];\n projectionNode?: unknown | null;\n source?: Partial<EditorAgentSource>;\n createdAt?: number;\n semantics?: EditorAgentContextSemantics | null;\n}\n\nexport interface LocalEditorAgentContextObjectSetInput<TDocument = unknown> {\n document: TDocument;\n objectIds: readonly string[];\n hierarchyItems?: readonly SceneGraphTreeItem[];\n projectionNodes?: Record<string, unknown | null | undefined>;\n source?: Partial<EditorAgentSource>;\n createdAt?: number;\n semantics?: EditorAgentContextSemantics | null;\n}\n\nexport interface LocalEditorAgentContextRegionBindingInput<TDocument = unknown>\n extends LocalEditorAgentContextObjectSetInput<TDocument> {\n regionLabel?: string;\n relationshipType?: string;\n relationshipDescription?: string;\n}\n\nexport interface LocalEditorAgentContextSpatialMarkerInput<TDocument = unknown> {\n document: TDocument;\n marker: ResolvedSpatialMarkerNode;\n graph?: ResolvedSpatialMarkerGraph | null;\n directRelations?: readonly SpatialRelation[];\n relatedMarkerIds?: readonly string[];\n relatedObjectIds?: readonly string[];\n hierarchyItems?: readonly SceneGraphTreeItem[];\n markerTypes?: readonly SpatialMarkerTypeDefinition[];\n relationTypes?: readonly SpatialRelationTypeDefinition[];\n source?: Partial<EditorAgentSource>;\n createdAt?: number;\n semantics?: EditorAgentContextSemantics | null;\n}\n\nexport interface LocalEditorAgentContextSpatialRelationGraphInput<TDocument = unknown> {\n document: TDocument;\n graph: ResolvedSpatialMarkerGraph;\n focusMarkerIds?: readonly string[];\n focusObjectIds?: readonly string[];\n hierarchyItems?: readonly SceneGraphTreeItem[];\n markerTypes?: readonly SpatialMarkerTypeDefinition[];\n relationTypes?: readonly SpatialRelationTypeDefinition[];\n source?: Partial<EditorAgentSource>;\n createdAt?: number;\n semantics?: EditorAgentContextSemantics | null;\n}\n\ninterface LocalEditorAgentSpatialRelationEndpointSummary {\n kind: string;\n id: string;\n label?: string;\n}\n\ninterface LocalEditorAgentSpatialRelationSummary {\n relationId?: string;\n relationType?: string;\n relationLabel?: string;\n directed?: boolean;\n from?: LocalEditorAgentSpatialRelationEndpointSummary;\n to?: LocalEditorAgentSpatialRelationEndpointSummary;\n summary: string;\n count?: number;\n}\n\ninterface LocalEditorAgentSpatialGraphIssue {\n code: string;\n severity: 'warning' | 'error';\n message: string;\n relationId?: string;\n markerId?: string;\n endpoint?: LocalEditorAgentSpatialRelationEndpointSummary;\n}\n\ninterface LocalEditorAgentSpatialRelationNeighborhood {\n markerId: string;\n markerLabel?: string;\n oneHopRelations: SpatialRelation[];\n relatedMarkerIds?: string[];\n relatedObjectIds?: string[];\n twoHopSummaries?: LocalEditorAgentSpatialRelationSummary[];\n localSummaries?: LocalEditorAgentSpatialRelationSummary[];\n graphIssues?: LocalEditorAgentSpatialGraphIssue[];\n}\n\nexport function createLocalEditorProjectEntryAgentContext(\n input: LocalEditorAgentContextProjectEntryInput,\n): EditorAgentProjectFileContext | EditorAgentProjectDirectoryContext | null {\n const path = normalizeProjectEntryPath(input.path);\n if (!path) return null;\n const segments = path.split('/');\n const name = input.name?.trim() || segments[segments.length - 1] || path;\n const extension = input.entryKind === 'file'\n ? input.extension?.trim().toLowerCase() || undefined\n : undefined;\n const entry = {\n path,\n name,\n entryKind: input.entryKind,\n ...(extension ? { extension } : {}),\n ...(input.assetId?.trim() ? { assetId: input.assetId.trim() } : {}),\n ...(input.assetKind?.trim() ? { assetKind: input.assetKind.trim() } : {}),\n };\n const kind = input.entryKind === 'directory' ? 'project-directory' : 'project-file';\n const base = {\n schemaVersion: EDITOR_AGENT_CONTEXT_SCHEMA_VERSION,\n id: createAgentContextId(kind, [path], input.createdAt),\n label: name,\n summary: [\n input.entryKind === 'directory' ? `Project Directory: ${name}` : `Project File: ${name}`,\n `path: ${path}`,\n ...(extension ? [`type: ${extension}`] : []),\n ...(entry.assetId ? [`assetId: ${entry.assetId}`] : []),\n ].join('\\n'),\n createdAt: input.createdAt ?? Date.now(),\n source: createAgentSource('project-files', input.source),\n };\n return input.entryKind === 'directory'\n ? { ...base, kind: 'project-directory', entry: { ...entry, entryKind: 'directory' } }\n : { ...base, kind: 'project-file', entry: { ...entry, entryKind: 'file' } };\n}\n\nexport function createLocalEditorSceneObjectAgentContext<TDocument>(\n input: LocalEditorAgentContextObjectInput<TDocument>,\n): EditorAgentSceneObjectContext | null {\n const objectId = normalizeId(input.objectId);\n if (!objectId) return null;\n const hierarchyById = createHierarchyMap(input.hierarchyItems);\n const object = createAgentSceneObject(objectId, hierarchyById, input.projectionNode);\n const label = object.label ?? object.name ?? object.id;\n return {\n schemaVersion: EDITOR_AGENT_CONTEXT_SCHEMA_VERSION,\n id: createAgentContextId('scene-object', [objectId], input.createdAt),\n kind: 'scene-object',\n label,\n summary: summarizeSceneObject(object),\n createdAt: input.createdAt ?? Date.now(),\n source: createAgentSource('hierarchy', input.source),\n object,\n ...pickAgentSemantics(input.semantics),\n };\n}\n\nexport function createLocalEditorSceneObjectSetAgentContext<TDocument>(\n input: LocalEditorAgentContextObjectSetInput<TDocument>,\n): EditorAgentSceneObjectSetContext | null {\n const objectIds = normalizeIds(input.objectIds);\n if (objectIds.length === 0) return null;\n const hierarchyById = createHierarchyMap(input.hierarchyItems);\n const objects = objectIds.map(id => createAgentSceneObject(id, hierarchyById, input.projectionNodes?.[id]));\n return {\n schemaVersion: EDITOR_AGENT_CONTEXT_SCHEMA_VERSION,\n id: createAgentContextId('scene-object-set', objectIds, input.createdAt),\n kind: 'scene-object-set',\n label: `${objects.length} selected objects`,\n summary: summarizeSceneObjectSet(objects),\n createdAt: input.createdAt ?? Date.now(),\n source: createAgentSource('selection', input.source),\n objectIds,\n objects,\n ...pickAgentSemantics(input.semantics),\n };\n}\n\nexport function createLocalEditorRegionBindingAgentContext<TDocument>(\n input: LocalEditorAgentContextRegionBindingInput<TDocument>,\n): EditorAgentRegionBindingContext | null {\n const objectIds = normalizeIds(input.objectIds);\n if (objectIds.length === 0) return null;\n const hierarchyById = createHierarchyMap(input.hierarchyItems);\n const objects = objectIds.map(id => createAgentSceneObject(id, hierarchyById, input.projectionNodes?.[id]));\n const bounds = mergeAgentBounds(objects.map(object => object.bounds).filter((value): value is EditorAgentBounds => !!value));\n const label = input.regionLabel?.trim() || `${objects.length} objects region`;\n return {\n schemaVersion: EDITOR_AGENT_CONTEXT_SCHEMA_VERSION,\n id: createAgentContextId('region-binding', objectIds, input.createdAt),\n kind: 'region-binding',\n label,\n summary: summarizeRegionBinding(label, objects),\n createdAt: input.createdAt ?? Date.now(),\n source: createAgentSource('region-binding', input.source),\n region: {\n id: `region:${objectIds.join('+')}`,\n label,\n ...(bounds ? { bounds } : {}),\n objectIds,\n },\n relationship: {\n type: input.relationshipType?.trim() || 'selection-region',\n description: input.relationshipDescription?.trim()\n || 'The selected scene objects are being described to the Agent as a region relationship.',\n },\n ...pickAgentSemantics(input.semantics),\n };\n}\n\nexport function createLocalEditorSpatialMarkerAgentContext<TDocument>(\n input: LocalEditorAgentContextSpatialMarkerInput<TDocument>,\n): EditorAgentSpatialMarkerContext | null {\n const markerId = normalizeId(input.marker.id);\n if (!markerId || input.marker.spatial.status !== 'resolved') return null;\n const label = input.marker.label || markerId;\n const markerLabels = createMarkerLabelMap(input.graph?.markers ?? [input.marker]);\n const objectLabels = createObjectLabelMap(input.hierarchyItems);\n const relationTypes = input.relationTypes ?? [];\n const graph = input.graph ?? {\n schemaVersion: 1,\n markers: [input.marker],\n relations: input.directRelations ? [...input.directRelations] : [],\n };\n const relationNeighborhood = createSpatialRelationNeighborhood(\n markerId,\n label,\n graph,\n input.directRelations ?? [],\n input.relatedMarkerIds ?? [],\n input.relatedObjectIds ?? [],\n relationTypes,\n markerLabels,\n objectLabels,\n );\n const context = {\n schemaVersion: EDITOR_AGENT_CONTEXT_SCHEMA_VERSION,\n id: createAgentContextId('spatial-marker', [markerId], input.createdAt),\n kind: 'spatial-marker',\n label,\n summary: summarizeSpatialMarker(input.marker, input.directRelations ?? [], relationTypes, markerLabels, objectLabels, relationNeighborhood),\n createdAt: input.createdAt ?? Date.now(),\n source: createAgentSource('marker', input.source),\n marker: cloneResolvedSpatialMarker(input.marker),\n directRelations: input.directRelations?.map(cloneSpatialRelation) ?? [],\n ...(input.relatedMarkerIds?.length ? { relatedMarkerIds: [...input.relatedMarkerIds] } : {}),\n ...(input.relatedObjectIds?.length ? { relatedObjectIds: [...input.relatedObjectIds] } : {}),\n ...(input.markerTypes?.length ? { markerTypes: input.markerTypes.map(cloneMarkerTypeDefinition) } : {}),\n ...(input.relationTypes?.length ? { relationTypes: input.relationTypes.map(cloneRelationTypeDefinition) } : {}),\n relationNeighborhood,\n ...pickAgentSemantics(input.semantics),\n };\n return context as EditorAgentSpatialMarkerContext;\n}\n\nexport function createLocalEditorSpatialRelationGraphAgentContext<TDocument>(\n input: LocalEditorAgentContextSpatialRelationGraphInput<TDocument>,\n): EditorAgentSpatialRelationGraphContext | null {\n if (input.graph.markers.length === 0) return null;\n if (input.graph.markers.some(marker => marker.spatial.status !== 'resolved')) return null;\n const markerIds = input.graph.markers.map(marker => marker.id);\n const objectLabels = createObjectLabelMap(input.hierarchyItems);\n const markerLabels = createMarkerLabelMap(input.graph.markers);\n const relationTypes = input.relationTypes ?? [];\n const graphIssues = createSpatialGraphIssues(input.graph, markerLabels, objectLabels);\n const focusSummaries = createSpatialGraphFocusSummaries(\n input.graph,\n input.focusMarkerIds ?? [],\n input.focusObjectIds ?? [],\n relationTypes,\n markerLabels,\n objectLabels,\n );\n const context = {\n schemaVersion: EDITOR_AGENT_CONTEXT_SCHEMA_VERSION,\n id: createAgentContextId('spatial-relation-graph', markerIds, input.createdAt),\n kind: 'spatial-relation-graph',\n label: `${input.graph.markers.length} spatial markers`,\n summary: summarizeSpatialRelationGraph(input.graph, relationTypes, objectLabels, focusSummaries, graphIssues),\n createdAt: input.createdAt ?? Date.now(),\n source: createAgentSource('marker-graph', input.source),\n graph: cloneResolvedSpatialMarkerGraph(input.graph),\n ...(input.focusMarkerIds?.length ? { focusMarkerIds: [...input.focusMarkerIds] } : {}),\n ...(input.focusObjectIds?.length ? { focusObjectIds: [...input.focusObjectIds] } : {}),\n ...(input.markerTypes?.length ? { markerTypes: input.markerTypes.map(cloneMarkerTypeDefinition) } : {}),\n ...(input.relationTypes?.length ? { relationTypes: input.relationTypes.map(cloneRelationTypeDefinition) } : {}),\n ...(graphIssues.length ? { graphIssues } : {}),\n ...(focusSummaries.length ? { focusSummaries } : {}),\n ...pickAgentSemantics(input.semantics),\n };\n return context as EditorAgentSpatialRelationGraphContext;\n}\n\nfunction createAgentSceneObject(\n objectId: string,\n hierarchyById: Map<string, SceneGraphTreeItem>,\n projectionNode: unknown,\n): EditorAgentSceneObject {\n const hierarchyItem = hierarchyById.get(objectId) ?? null;\n const projection = readRecord(projectionNode);\n const name = readString(projection?.name) || hierarchyItem?.label || objectId;\n const object: EditorAgentSceneObject = {\n id: objectId,\n name,\n label: hierarchyItem?.label ?? name,\n hierarchyPath: createHierarchyPath(objectId, hierarchyById),\n };\n const objectKind = readObjectKind(hierarchyItem, projection);\n if (objectKind) object.objectKind = objectKind;\n const transform = readAgentTransform(projection?.transform);\n if (transform) object.transform = transform;\n const bounds = readAgentBounds(projection);\n if (bounds) object.bounds = bounds;\n const assetRefs = readAssetRefs(projection?.asset);\n if (assetRefs.length > 0) object.assetRefs = assetRefs;\n return object;\n}\n\nfunction createAgentContextId(kind: string, ids: readonly string[], createdAt = Date.now()): string {\n return `${kind}:${ids.join('+')}:${createdAt}`;\n}\n\nfunction createAgentSource(\n surface: EditorAgentSource['surface'],\n source: Partial<EditorAgentSource> | undefined,\n): EditorAgentSource {\n return {\n editor: 'fps-game-editor',\n surface,\n ...(source?.projectId ? { projectId: source.projectId } : {}),\n ...(source?.projectName ? { projectName: source.projectName } : {}),\n };\n}\n\nfunction createHierarchyMap(items: readonly SceneGraphTreeItem[] | undefined): Map<string, SceneGraphTreeItem> {\n return new Map((items ?? []).map(item => [item.id, item]));\n}\n\nfunction createObjectLabelMap(items: readonly SceneGraphTreeItem[] | undefined): Map<string, string> {\n return new Map((items ?? [])\n .filter(item => item.role === undefined || item.role === 'object')\n .map(item => [item.id, item.label || item.id]));\n}\n\nfunction createMarkerLabelMap(markers: readonly ResolvedSpatialMarkerNode[]): Map<string, string> {\n return new Map(markers.map(marker => [marker.id, marker.label || marker.id]));\n}\n\nfunction createHierarchyPath(objectId: string, byId: Map<string, SceneGraphTreeItem>): string | undefined {\n const path: string[] = [];\n const seen = new Set<string>();\n let cursor = byId.get(objectId) ?? null;\n while (cursor && !seen.has(cursor.id)) {\n seen.add(cursor.id);\n path.unshift(cursor.label || cursor.id);\n cursor = cursor.parentId ? byId.get(cursor.parentId) ?? null : null;\n }\n return path.length > 0 ? path.join(' / ') : undefined;\n}\n\nfunction readObjectKind(\n hierarchyItem: SceneGraphTreeItem | null,\n projection: Record<string, unknown> | null,\n): string | undefined {\n const runtimeKind = readString(projection?.runtimeKind);\n if (runtimeKind) return runtimeKind;\n const helperKind = readString(projection?.helperKind);\n if (helperKind) return helperKind;\n const primitive = readRecord(projection?.primitive);\n const primitiveShape = readString(primitive?.shape);\n if (primitiveShape) return `primitive:${primitiveShape}`;\n const asset = readRecord(projection?.asset);\n if (asset) return 'asset';\n return hierarchyItem?.role;\n}\n\nfunction readAgentTransform(value: unknown): EditorAgentTransform | undefined {\n const record = readRecord(value);\n if (!record) return undefined;\n const position = readVec3(record.position);\n const rotation = readVec3(record.rotation);\n const scale = readVec3(record.scale);\n if (!position && !rotation && !scale) return undefined;\n return {\n ...(position ? { position } : {}),\n ...(rotation ? { rotation } : {}),\n ...(scale ? { scale } : {}),\n };\n}\n\nfunction readAgentBounds(value: unknown): EditorAgentBounds | undefined {\n const record = readRecord(value);\n if (!record) return undefined;\n const boundsRecord = readRecord(record.bounds) ?? record;\n const min = readVec3(boundsRecord.min);\n const max = readVec3(boundsRecord.max);\n const size = readVec3(boundsRecord.size);\n const center = readVec3(boundsRecord.center);\n if (!min && !max && !size && !center) return undefined;\n return {\n ...(min ? { min } : {}),\n ...(max ? { max } : {}),\n ...(size ? { size } : {}),\n ...(center ? { center } : {}),\n };\n}\n\nfunction mergeAgentBounds(boundsList: readonly EditorAgentBounds[]): EditorAgentBounds | undefined {\n const minMaxBounds = boundsList\n .map(bounds => bounds.min && bounds.max ? { min: bounds.min, max: bounds.max } : null)\n .filter((bounds): bounds is { min: EditorAgentVec3; max: EditorAgentVec3 } => !!bounds);\n if (minMaxBounds.length === 0) return undefined;\n const min = {\n x: Math.min(...minMaxBounds.map(bounds => bounds.min.x)),\n y: Math.min(...minMaxBounds.map(bounds => bounds.min.y)),\n z: Math.min(...minMaxBounds.map(bounds => bounds.min.z)),\n };\n const max = {\n x: Math.max(...minMaxBounds.map(bounds => bounds.max.x)),\n y: Math.max(...minMaxBounds.map(bounds => bounds.max.y)),\n z: Math.max(...minMaxBounds.map(bounds => bounds.max.z)),\n };\n return {\n min,\n max,\n size: {\n x: max.x - min.x,\n y: max.y - min.y,\n z: max.z - min.z,\n },\n center: {\n x: (min.x + max.x) / 2,\n y: (min.y + max.y) / 2,\n z: (min.z + max.z) / 2,\n },\n };\n}\n\nfunction readAssetRefs(value: unknown): string[] {\n const asset = readRecord(value);\n if (!asset) return [];\n return [readString(asset.id), readString(asset.sourceId)].filter((ref): ref is string => !!ref);\n}\n\nfunction readVec3(value: unknown): EditorAgentVec3 | undefined {\n const record = readRecord(value);\n if (!record) return undefined;\n const x = readFiniteNumber(record.x);\n const y = readFiniteNumber(record.y);\n const z = readFiniteNumber(record.z);\n return x == null || y == null || z == null ? undefined : { x, y, z };\n}\n\nfunction readRecord(value: unknown): Record<string, unknown> | null {\n return value && typeof value === 'object' ? value as Record<string, unknown> : null;\n}\n\nfunction readString(value: unknown): string | undefined {\n return typeof value === 'string' && value.trim() ? value.trim() : undefined;\n}\n\nfunction readFiniteNumber(value: unknown): number | undefined {\n return typeof value === 'number' && Number.isFinite(value) ? value : undefined;\n}\n\nfunction normalizeId(value: string): string | null {\n const id = value.trim();\n return id || null;\n}\n\nfunction normalizeProjectEntryPath(value: string): string | null {\n const rawPath = value.trim().replace(/\\\\/g, '/');\n if (rawPath === '/' || rawPath === '.') return '.';\n const path = rawPath.replace(/^\\/+/, '');\n if (!path || /^[A-Za-z]:\\//.test(path)) return null;\n const segments = path.split('/');\n return segments.some(segment => !segment || segment === '.' || segment === '..')\n ? null\n : segments.join('/');\n}\n\nfunction normalizeIds(values: readonly string[]): string[] {\n return [...new Set(values.map(value => value.trim()).filter(Boolean))];\n}\n\nfunction pickAgentSemantics(value: EditorAgentContextSemantics | null | undefined): EditorAgentContextSemantics {\n if (!value) return {};\n return {\n ...(value.domainKind ? { domainKind: value.domainKind } : {}),\n ...(value.domainRole ? { domainRole: value.domainRole } : {}),\n ...(value.functionLabel ? { functionLabel: value.functionLabel } : {}),\n ...(value.functionDescription ? { functionDescription: value.functionDescription } : {}),\n ...(value.domainHints ? { domainHints: value.domainHints } : {}),\n ...(value.bindingCandidates ? { bindingCandidates: value.bindingCandidates } : {}),\n ...(value.sourceRefs ? { sourceRefs: value.sourceRefs } : {}),\n ...(value.relationshipHints ? { relationshipHints: value.relationshipHints } : {}),\n ...(value.metadata ? { metadata: value.metadata } : {}),\n };\n}\n\nfunction summarizeSceneObject(object: EditorAgentSceneObject): string {\n return [\n `Scene Object: ${object.label ?? object.name ?? object.id}`,\n `id: ${object.id}`,\n ...(object.hierarchyPath ? [`path: ${object.hierarchyPath}`] : []),\n ...(object.objectKind ? [`kind: ${object.objectKind}`] : []),\n ].join('\\n');\n}\n\nfunction summarizeSceneObjectSet(objects: readonly EditorAgentSceneObject[]): string {\n return [\n `Scene Object Set: ${objects.length} objects`,\n ...objects.map(object => `- ${object.label ?? object.name ?? object.id} (${object.id})`),\n ].join('\\n');\n}\n\nfunction summarizeRegionBinding(label: string, objects: readonly EditorAgentSceneObject[]): string {\n return [\n `Region Binding: ${label}`,\n `objects: ${objects.length}`,\n ...objects.map(object => `- ${object.label ?? object.name ?? object.id} (${object.id})`),\n ].join('\\n');\n}\n\nfunction summarizeSpatialMarker(\n marker: ResolvedSpatialMarkerNode,\n relations: readonly SpatialRelation[],\n relationTypes: readonly SpatialRelationTypeDefinition[],\n markerLabels: ReadonlyMap<string, string>,\n objectLabels: ReadonlyMap<string, string>,\n neighborhood?: LocalEditorAgentSpatialRelationNeighborhood,\n): string {\n const relationLabels = new Map(relationTypes.map(definition => [definition.type, definition.label]));\n return [\n `Spatial Marker: ${marker.label || marker.id}`,\n `id: ${marker.id}`,\n `type: ${marker.markerType}`,\n `kind: ${marker.kind}`,\n `spatial: ${summarizeSpatialFacts(marker)}`,\n ...(relations.length > 0\n ? [`relations: ${relations.map(relation => summarizeSpatialRelation(relation, relationLabels, markerLabels, objectLabels)).join('; ')}`]\n : []),\n ...(neighborhood?.localSummaries?.length\n ? [`local summary: ${neighborhood.localSummaries.map(summary => summary.summary).join('; ')}`]\n : []),\n ...(neighborhood?.twoHopSummaries?.length\n ? [`two-hop context: ${neighborhood.twoHopSummaries.map(summary => summary.summary).join('; ')}`]\n : []),\n ...(neighborhood?.graphIssues?.length\n ? [`warnings: ${neighborhood.graphIssues.map(issue => issue.message).join('; ')}`]\n : []),\n ].join('\\n');\n}\n\nfunction summarizeSpatialRelationGraph(\n graph: ResolvedSpatialMarkerGraph,\n relationTypes: readonly SpatialRelationTypeDefinition[],\n objectLabels: ReadonlyMap<string, string>,\n focusSummaries: readonly LocalEditorAgentSpatialRelationSummary[] = [],\n graphIssues: readonly LocalEditorAgentSpatialGraphIssue[] = [],\n): string {\n const relationLabels = new Map(relationTypes.map(definition => [definition.type, definition.label]));\n const markerLabels = createMarkerLabelMap(graph.markers);\n return [\n `Spatial Relation Graph: ${graph.markers.length} markers, ${graph.relations.length} relations`,\n ...graph.markers.map(marker => `- ${marker.label || marker.id} (${marker.id}): ${summarizeSpatialFacts(marker)}`),\n ...(graph.relations.length > 0\n ? [`Relations: ${graph.relations.map(relation => summarizeSpatialRelation(relation, relationLabels, markerLabels, objectLabels)).join('; ')}`]\n : []),\n ...(focusSummaries.length > 0\n ? [`Focus summaries: ${focusSummaries.map(summary => summary.summary).join('; ')}`]\n : []),\n ...(graphIssues.length > 0\n ? [`Graph warnings: ${graphIssues.map(issue => issue.message).join('; ')}`]\n : []),\n ].join('\\n');\n}\n\nfunction createSpatialRelationNeighborhood(\n markerId: string,\n markerLabel: string,\n graph: ResolvedSpatialMarkerGraph,\n directRelations: readonly SpatialRelation[],\n relatedMarkerIds: readonly string[],\n relatedObjectIds: readonly string[],\n relationTypes: readonly SpatialRelationTypeDefinition[],\n markerLabels: ReadonlyMap<string, string>,\n objectLabels: ReadonlyMap<string, string>,\n): LocalEditorAgentSpatialRelationNeighborhood {\n const issues = createSpatialGraphIssues(graph, markerLabels, objectLabels)\n .filter(issue => issue.markerId === markerId || graph.relations.some(relation => (\n relation.id === issue.relationId && relationTouchesMarker(relation, markerId)\n )));\n return {\n markerId,\n markerLabel,\n oneHopRelations: directRelations.map(cloneSpatialRelation),\n ...(relatedMarkerIds.length ? { relatedMarkerIds: [...relatedMarkerIds] } : {}),\n ...(relatedObjectIds.length ? { relatedObjectIds: [...relatedObjectIds] } : {}),\n localSummaries: createMarkerLocalRelationSummaries(markerId, markerLabel, directRelations, relationTypes, markerLabels, objectLabels),\n twoHopSummaries: createTwoHopRelationSummaries(markerId, graph, directRelations, relationTypes, markerLabels, objectLabels),\n ...(issues.length ? { graphIssues: issues } : {}),\n };\n}\n\nfunction createSpatialGraphFocusSummaries(\n graph: ResolvedSpatialMarkerGraph,\n focusMarkerIds: readonly string[],\n focusObjectIds: readonly string[],\n relationTypes: readonly SpatialRelationTypeDefinition[],\n markerLabels: ReadonlyMap<string, string>,\n objectLabels: ReadonlyMap<string, string>,\n): LocalEditorAgentSpatialRelationSummary[] {\n const summaries: LocalEditorAgentSpatialRelationSummary[] = [];\n const focusMarkers = focusMarkerIds.length > 0\n ? focusMarkerIds\n : graph.markers.slice(0, 3).map(marker => marker.id);\n for (const markerId of focusMarkers) {\n const marker = graph.markers.find(candidate => candidate.id === markerId) ?? null;\n if (!marker) continue;\n const directRelations = graph.relations.filter(relation => relationTouchesMarker(relation, markerId));\n summaries.push(...createMarkerLocalRelationSummaries(\n markerId,\n marker.label || marker.id,\n directRelations,\n relationTypes,\n markerLabels,\n objectLabels,\n ));\n }\n if (focusObjectIds.length > 0) {\n const relationLabels = new Map(relationTypes.map(definition => [definition.type, definition.label]));\n for (const objectId of focusObjectIds) {\n const relations = graph.relations.filter(relation => relationTouchesObject(relation, objectId));\n if (relations.length === 0) continue;\n summaries.push({\n summary: `${formatEndpointHumanLabel({ kind: 'scene-object', id: objectId }, markerLabels, objectLabels)} has ${relations.length} direct marker relations: ${relations.map(relation => summarizeSpatialRelation(relation, relationLabels, markerLabels, objectLabels)).join('; ')}`,\n count: relations.length,\n });\n }\n }\n return summaries;\n}\n\nfunction createMarkerLocalRelationSummaries(\n markerId: string,\n markerLabel: string,\n relations: readonly SpatialRelation[],\n relationTypes: readonly SpatialRelationTypeDefinition[],\n markerLabels: ReadonlyMap<string, string>,\n objectLabels: ReadonlyMap<string, string>,\n): LocalEditorAgentSpatialRelationSummary[] {\n const relationTypeLabels = new Map(relationTypes.map(definition => [definition.type, definition.label]));\n const groups = new Map<string, { type: string; label: string; count: number; endpoints: LocalEditorAgentSpatialRelationEndpointSummary[] }>();\n for (const relation of relations) {\n const related = relation.from.kind === 'marker' && relation.from.id === markerId ? relation.to : relation.from;\n const label = relation.label || relationTypeLabels.get(relation.type) || relation.type;\n const group = groups.get(relation.type) ?? { type: relation.type, label, count: 0, endpoints: [] };\n group.count += 1;\n group.endpoints.push(createEndpointSummary(related, markerLabels, objectLabels));\n groups.set(relation.type, group);\n }\n return [...groups.values()].map(group => ({\n relationType: group.type,\n relationLabel: group.label,\n count: group.count,\n summary: `${markerLabel} ${formatRelationCountPhrase(group.label, group.type, group.count)}: ${group.endpoints.slice(0, 6).map(formatEndpointSummary).join(', ')}${group.endpoints.length > 6 ? `, +${group.endpoints.length - 6} more` : ''}`,\n }));\n}\n\nfunction createTwoHopRelationSummaries(\n markerId: string,\n graph: ResolvedSpatialMarkerGraph,\n directRelations: readonly SpatialRelation[],\n relationTypes: readonly SpatialRelationTypeDefinition[],\n markerLabels: ReadonlyMap<string, string>,\n objectLabels: ReadonlyMap<string, string>,\n): LocalEditorAgentSpatialRelationSummary[] {\n const directRelationIds = new Set(directRelations.map(relation => relation.id));\n const neighborMarkerIds = new Set<string>();\n for (const relation of directRelations) {\n for (const endpoint of [relation.from, relation.to]) {\n if (endpoint.kind === 'marker' && endpoint.id !== markerId) neighborMarkerIds.add(endpoint.id);\n }\n }\n const relationLabels = new Map(relationTypes.map(definition => [definition.type, definition.label]));\n const summaries: LocalEditorAgentSpatialRelationSummary[] = [];\n for (const neighborId of neighborMarkerIds) {\n const secondHop = graph.relations.filter(relation => relationTouchesMarker(relation, neighborId) && !directRelationIds.has(relation.id));\n if (secondHop.length === 0) continue;\n const neighborLabel = markerLabels.get(neighborId) ?? neighborId;\n summaries.push({\n from: { kind: 'marker', id: neighborId, label: markerLabels.get(neighborId) },\n count: secondHop.length,\n summary: `${neighborLabel} has ${secondHop.length} additional relations: ${secondHop.slice(0, 5).map(relation => summarizeSpatialRelation(relation, relationLabels, markerLabels, objectLabels)).join('; ')}${secondHop.length > 5 ? `; +${secondHop.length - 5} more` : ''}`,\n });\n }\n return summaries;\n}\n\nfunction createSpatialGraphIssues(\n graph: ResolvedSpatialMarkerGraph,\n markerLabels: ReadonlyMap<string, string>,\n objectLabels: ReadonlyMap<string, string>,\n): LocalEditorAgentSpatialGraphIssue[] {\n const markerIds = new Set(graph.markers.map(marker => marker.id));\n const issues: LocalEditorAgentSpatialGraphIssue[] = [];\n for (const marker of graph.markers) {\n if (marker.spatial.status !== 'resolved') {\n issues.push({\n code: 'marker-spatial-unresolved',\n severity: 'warning',\n markerId: marker.id,\n message: `${marker.label || marker.id} has unresolved spatial facts${marker.spatial.unresolvedReason ? `: ${marker.spatial.unresolvedReason}` : ''}.`,\n });\n }\n for (const target of collectMarkerSpatialTargets(marker)) {\n if (target.kind === 'scene-object' && !objectLabels.has(target.id)) {\n issues.push({\n code: 'marker-missing-object-target',\n severity: 'warning',\n markerId: marker.id,\n endpoint: createEndpointSummary({ kind: target.kind, id: target.id, label: target.label }, markerLabels, objectLabels),\n message: `${marker.label || marker.id} references missing target scene object ${target.id}.`,\n });\n }\n }\n }\n for (const relation of graph.relations) {\n for (const [side, endpoint] of [['from', relation.from], ['to', relation.to]] as const) {\n if (endpoint.kind === 'marker' && !markerIds.has(endpoint.id)) {\n issues.push({\n code: 'relation-missing-marker-endpoint',\n severity: 'warning',\n relationId: relation.id,\n endpoint: createEndpointSummary(endpoint, markerLabels, objectLabels),\n message: `Relation ${relation.id} ${side} endpoint references missing marker ${endpoint.id}.`,\n });\n }\n if (endpoint.kind === 'scene-object' && !objectLabels.has(endpoint.id)) {\n issues.push({\n code: 'relation-missing-object-endpoint',\n severity: 'warning',\n relationId: relation.id,\n endpoint: createEndpointSummary(endpoint, markerLabels, objectLabels),\n message: `Relation ${relation.id} ${side} endpoint references missing scene object ${endpoint.id}.`,\n });\n }\n }\n }\n return issues;\n}\n\nfunction collectMarkerSpatialTargets(marker: ResolvedSpatialMarkerNode): SpatialRelation['from'][] {\n const targets: SpatialRelation['from'][] = [];\n const pushTarget = (target: ResolvedSpatialMarkerNode['target'] | undefined) => {\n if (!target || targets.some(candidate => candidate.kind === target.kind && candidate.id === target.id)) return;\n targets.push({\n kind: target.kind,\n id: target.id,\n ...(target.label ? { label: target.label } : {}),\n });\n };\n pushTarget(marker.target);\n pushTarget(marker.spatial.target);\n if (marker.geometry.kind === 'point' || marker.geometry.kind === 'object-bounds') pushTarget(marker.geometry.target);\n return targets;\n}\n\nfunction relationTouchesMarker(relation: SpatialRelation, markerId: string): boolean {\n return (relation.from.kind === 'marker' && relation.from.id === markerId)\n || (relation.to.kind === 'marker' && relation.to.id === markerId);\n}\n\nfunction relationTouchesObject(relation: SpatialRelation, objectId: string): boolean {\n return (relation.from.kind === 'scene-object' && relation.from.id === objectId)\n || (relation.to.kind === 'scene-object' && relation.to.id === objectId);\n}\n\nfunction createEndpointSummary(\n endpoint: SpatialRelation['from'],\n markerLabels: ReadonlyMap<string, string>,\n objectLabels: ReadonlyMap<string, string>,\n): LocalEditorAgentSpatialRelationEndpointSummary {\n const label = endpoint.label\n || (endpoint.kind === 'marker'\n ? markerLabels.get(endpoint.id)\n : endpoint.kind === 'scene-object'\n ? objectLabels.get(endpoint.id)\n : undefined);\n return {\n kind: endpoint.kind,\n id: endpoint.id,\n ...(label ? { label } : {}),\n };\n}\n\nfunction formatEndpointSummary(endpoint: LocalEditorAgentSpatialRelationEndpointSummary): string {\n return endpoint.label && endpoint.label !== endpoint.id\n ? `${endpoint.kind}:${endpoint.id} \"${endpoint.label}\"`\n : `${endpoint.kind}:${endpoint.id}`;\n}\n\nfunction formatEndpointHumanLabel(\n endpoint: SpatialRelation['from'],\n markerLabels: ReadonlyMap<string, string>,\n objectLabels: ReadonlyMap<string, string>,\n): string {\n const summary = createEndpointSummary(endpoint, markerLabels, objectLabels);\n return summary.label || summary.id;\n}\n\nfunction formatRelationCountPhrase(label: string, type: string, count: number): string {\n return `${label || type} ${count}`;\n}\n\nfunction summarizeSpatialFacts(marker: ResolvedSpatialMarkerNode): string {\n const spatial = marker.spatial;\n if (spatial.status !== 'resolved') return `unresolved${spatial.unresolvedReason ? `: ${spatial.unresolvedReason}` : ''}`;\n const parts = [\n spatial.origin ? `origin ${formatVec3(spatial.origin)}` : null,\n spatial.localFrame?.forward ? `forward ${formatVec3(spatial.localFrame.forward)}` : null,\n spatial.dimensions ? `dimensions ${formatVec3(spatial.dimensions)}` : null,\n spatial.bounds ? `bounds center ${formatVec3(spatial.bounds.center)} size ${formatVec3(spatial.bounds.size)}` : null,\n spatial.target ? `target ${summarizeSpatialRelationEndpoint({\n kind: spatial.target.kind,\n id: spatial.target.id,\n ...(spatial.target.label ? { label: spatial.target.label } : {}),\n }, new Map(), new Map())}` : null,\n ].filter((value): value is string => !!value);\n return parts.join(', ') || 'resolved';\n}\n\nfunction summarizeSpatialRelation(\n relation: SpatialRelation,\n relationLabels: ReadonlyMap<string, string>,\n markerLabels: ReadonlyMap<string, string>,\n objectLabels: ReadonlyMap<string, string>,\n): string {\n const arrow = relation.directed === false ? '--' : '->';\n return [\n summarizeSpatialRelationEndpoint(relation.from, markerLabels, objectLabels),\n summarizeSpatialRelationType(relation, relationLabels),\n arrow,\n summarizeSpatialRelationEndpoint(relation.to, markerLabels, objectLabels),\n ].join(' ');\n}\n\nfunction summarizeSpatialRelationEndpoint(\n endpoint: SpatialRelation['from'],\n markerLabels: ReadonlyMap<string, string>,\n objectLabels: ReadonlyMap<string, string>,\n): string {\n const label = endpoint.label\n || (endpoint.kind === 'marker'\n ? markerLabels.get(endpoint.id)\n : endpoint.kind === 'scene-object'\n ? objectLabels.get(endpoint.id)\n : undefined);\n return label && label !== endpoint.id\n ? `${endpoint.kind}:${endpoint.id} \"${label}\"`\n : `${endpoint.kind}:${endpoint.id}`;\n}\n\nfunction summarizeSpatialRelationType(\n relation: SpatialRelation,\n relationLabels: ReadonlyMap<string, string>,\n): string {\n const label = relation.label || relationLabels.get(relation.type);\n return label && label !== relation.type ? `${label} [${relation.type}]` : relation.type;\n}\n\nfunction formatVec3(value: EditorAgentVec3): string {\n return `(${value.x}, ${value.y}, ${value.z})`;\n}\n\nfunction cloneResolvedSpatialMarkerGraph(graph: ResolvedSpatialMarkerGraph): ResolvedSpatialMarkerGraph {\n return {\n ...graph,\n markers: graph.markers.map(cloneResolvedSpatialMarker),\n relations: graph.relations.map(cloneSpatialRelation),\n metadata: graph.metadata ? { ...graph.metadata } : undefined,\n };\n}\n\nfunction cloneResolvedSpatialMarker(marker: ResolvedSpatialMarkerNode): ResolvedSpatialMarkerNode {\n return {\n ...marker,\n geometry: cloneJsonObject(marker.geometry) as ResolvedSpatialMarkerNode['geometry'],\n target: marker.target ? { ...marker.target, metadata: marker.target.metadata ? { ...marker.target.metadata } : undefined } : undefined,\n semanticFrame: marker.semanticFrame ? { ...marker.semanticFrame } : undefined,\n tags: marker.tags ? [...marker.tags] : undefined,\n metadata: marker.metadata ? { ...marker.metadata } : undefined,\n spatial: {\n ...marker.spatial,\n origin: marker.spatial.origin ? { ...marker.spatial.origin } : undefined,\n bounds: marker.spatial.bounds\n ? {\n min: { ...marker.spatial.bounds.min },\n max: { ...marker.spatial.bounds.max },\n center: { ...marker.spatial.bounds.center },\n size: { ...marker.spatial.bounds.size },\n }\n : undefined,\n dimensions: marker.spatial.dimensions ? { ...marker.spatial.dimensions } : undefined,\n corners: marker.spatial.corners?.map(corner => ({ ...corner })),\n localFrame: marker.spatial.localFrame ? { ...marker.spatial.localFrame } : undefined,\n target: marker.spatial.target\n ? {\n ...marker.spatial.target,\n metadata: marker.spatial.target.metadata ? { ...marker.spatial.target.metadata } : undefined,\n }\n : undefined,\n metadata: marker.spatial.metadata ? { ...marker.spatial.metadata } : undefined,\n },\n };\n}\n\nfunction cloneSpatialRelation(relation: SpatialRelation): SpatialRelation {\n return {\n ...relation,\n from: { ...relation.from },\n to: { ...relation.to },\n tags: relation.tags ? [...relation.tags] : undefined,\n metadata: relation.metadata ? { ...relation.metadata } : undefined,\n };\n}\n\nfunction cloneMarkerTypeDefinition(definition: SpatialMarkerTypeDefinition): SpatialMarkerTypeDefinition {\n return {\n ...definition,\n defaultTags: definition.defaultTags ? [...definition.defaultTags] : undefined,\n metadata: definition.metadata ? { ...definition.metadata } : undefined,\n };\n}\n\nfunction cloneRelationTypeDefinition(definition: SpatialRelationTypeDefinition): SpatialRelationTypeDefinition {\n return {\n ...definition,\n allowedFromKinds: definition.allowedFromKinds ? [...definition.allowedFromKinds] : undefined,\n allowedToKinds: definition.allowedToKinds ? [...definition.allowedToKinds] : undefined,\n metadata: definition.metadata ? { ...definition.metadata } : undefined,\n };\n}\n\nfunction cloneJsonObject<T>(value: T): T {\n if (!value || typeof value !== 'object') return value;\n return JSON.parse(JSON.stringify(value)) as T;\n}\n"]}
@@ -2,7 +2,7 @@ import { type AuthoringCommandResult, type AuthoringSourceDescriptor, type Docum
2
2
  import { type EditingContextProvider, type EditingContextSnapshot, type EditorToolManager } from '@fps-games/editor-core/tools';
3
3
  import { type EditorDiagnosticStore } from '@fps-games/editor-core/diagnostics';
4
4
  import { type EditorDiagnostic, type EditorDiagnosticLocator, type EditorDiagnosticPhase, type ArtistMaterialTextureRef, type SpatialMarkerGraph, type SpatialMarkerNode, type SpatialMarkerTypeDefinition, type SpatialRelation, type SpatialRelationTypeDefinition } from '@fps-games/editor-protocol';
5
- import { type LocalEditorBrowserAssetActionInput, type LocalEditorBrowserUiAssetItem, type LocalEditorBrowserInspectorOptions, type LocalEditorBrowserPerformanceStats, type LocalEditorBrowserRenderingPanelState, type LocalEditorBrowserRenderingActionInput, type LocalEditorBrowserRenderingPropertyChangeInput, type LocalEditorBrowserUiPropertyInput, type LocalEditorBrowserUiState, type LocalEditorThemeController, type LocalEditorThemeName } from '@fps-games/editor-browser';
5
+ import { type LocalEditorBrowserAssetActionInput, type LocalEditorBrowserUiAssetItem, type LocalEditorBrowserProjectFileContent, type LocalEditorBrowserProjectFileSnapshot, type LocalEditorBrowserProjectEntryAgentInput, type LocalEditorBrowserProjectMediaSource, type LocalEditorBrowserInspectorOptions, type LocalEditorBrowserPerformanceStats, type LocalEditorBrowserRenderingPanelState, type LocalEditorBrowserRenderingActionInput, type LocalEditorBrowserRenderingPropertyChangeInput, type LocalEditorBrowserUiPropertyInput, type LocalEditorBrowserUiState, type LocalEditorThemeController, type LocalEditorThemeName } from '@fps-games/editor-browser';
6
6
  import { type FpsEditorPluginHost } from '@fps-games/editor-core/plugin-host';
7
7
  import { LocalEditorPrefabStageTransactionController } from './local-editor-prefab-stage-transaction.js';
8
8
  import { type BabylonEnvironmentTextureController, type BabylonEnvironmentTextureProfile, type BabylonDefaultPostProcessPipelineController, type BabylonDefaultPostProcessProfile } from '@fps-games/babylon-renderer';
@@ -52,7 +52,9 @@ export interface LocalEditorHarnessAssetItem {
52
52
  };
53
53
  origin?: string;
54
54
  dedupeKey?: string;
55
+ contentHash?: string;
55
56
  displayName?: string;
57
+ relativePath?: string;
56
58
  meta?: string;
57
59
  placeable?: boolean;
58
60
  preview?: LocalEditorBrowserUiAssetItem['preview'];
@@ -621,6 +623,9 @@ export interface LocalEditorHarnessPersistenceAdapter<TDocument, TAsset = LocalE
621
623
  }>;
622
624
  loadDocument?(): LocalEditorMaybePromise<TDocument>;
623
625
  loadAssets(): LocalEditorMaybePromise<TAsset[]>;
626
+ loadProjectFiles?(): LocalEditorMaybePromise<LocalEditorBrowserProjectFileSnapshot>;
627
+ loadProjectFile?(path: string): LocalEditorMaybePromise<LocalEditorBrowserProjectFileContent>;
628
+ resolveProjectMedia?(path: string): LocalEditorMaybePromise<LocalEditorBrowserProjectMediaSource | null>;
624
629
  saveAuthoringSource?(input: {
625
630
  source: AuthoringSourceDescriptor;
626
631
  document: TDocument;
@@ -701,6 +706,9 @@ export interface LocalEditorHarnessOptions<TDocument, TPatch, TAsset = LocalEdit
701
706
  providers?: readonly HierarchyScopeProvider[];
702
707
  operations?: readonly LocalEditorHarnessHierarchyOperationRegistration<TDocument, TPatch>[];
703
708
  };
709
+ agentContext?: {
710
+ sendProjectEntry(input: LocalEditorBrowserProjectEntryAgentInput): LocalEditorMaybePromise<unknown>;
711
+ };
704
712
  agentBridge?: {
705
713
  sessionMetadata?: LocalEditorAgentBridgeSessionMetadata;
706
714
  };
@@ -777,6 +785,8 @@ interface LocalEditorHarnessState<TDocument, TPatch, TAsset> {
777
785
  handleSessionObserverError: (error: unknown) => void;
778
786
  source: AuthoringSourceDescriptor | null;
779
787
  assets: TAsset[];
788
+ projectFiles: LocalEditorBrowserProjectFileSnapshot | null;
789
+ projectFilesWarning: string | null;
780
790
  assetFilter: string;
781
791
  updatedAssetProjection: LocalEditorHarnessUpdatedAssetProjectionState;
782
792
  selectedAssetId: string | null;
@@ -813,6 +823,9 @@ interface LocalEditorHarnessState<TDocument, TPatch, TAsset> {
813
823
  sceneViewMeasurement: BabylonSceneViewMeasurementController | null;
814
824
  sceneViewSpatialOverlay: BabylonSceneViewSpatialOverlayController | null;
815
825
  selectionController: BabylonProjectionSelectionController | null;
826
+ selectionInspectorRefreshGeneration: number;
827
+ selectionInspectorRefreshFrame: number | null;
828
+ selectionInspectorRefreshTimeout: ReturnType<typeof globalThis.setTimeout> | null;
816
829
  sceneRenderScheduler: LocalEditorSceneRenderScheduler | null;
817
830
  viewportRenderCoordinator: LocalEditorViewportRenderCoordinator | null;
818
831
  sceneFrameStats: LocalEditorSceneRenderStats | null;
@@ -953,7 +966,7 @@ export interface LocalEditorHierarchyScopeProvider extends HierarchyScopeProvide
953
966
  }
954
967
  export declare function createLocalEditorSceneHierarchyScopeAdapter<TDocument, TPatch, TAsset>(state: LocalEditorHarnessState<TDocument, TPatch, TAsset>, options: LocalEditorHarnessOptions<TDocument, TPatch, TAsset>): LocalEditorHierarchyScopeAdapter<TDocument, TPatch, TAsset>;
955
968
  export declare function createLocalEditorPrefabHierarchyScopeAdapter<TDocument, TPatch, TAsset>(state: LocalEditorHarnessState<TDocument, TPatch, TAsset>, options: LocalEditorHarnessOptions<TDocument, TPatch, TAsset>): LocalEditorHierarchyScopeAdapter<TDocument, TPatch, TAsset>;
956
- export declare function createLocalEditorHarnessHierarchyScopeProvider<TDocument, TPatch, TAsset>(state: LocalEditorHarnessState<TDocument, TPatch, TAsset>, options: LocalEditorHarnessOptions<TDocument, TPatch, TAsset>, render: () => void, adapter: LocalEditorHierarchyScopeAdapter<TDocument, TPatch, TAsset>, executorStates?: LocalEditorDocumentOperationExecutorRegistry): LocalEditorHierarchyScopeProvider;
969
+ export declare function createLocalEditorHarnessHierarchyScopeProvider<TDocument, TPatch, TAsset>(state: LocalEditorHarnessState<TDocument, TPatch, TAsset>, options: LocalEditorHarnessOptions<TDocument, TPatch, TAsset>, render: () => void, adapter: LocalEditorHierarchyScopeAdapter<TDocument, TPatch, TAsset>, executorStates?: LocalEditorDocumentOperationExecutorRegistry, renderSelection?: () => void): LocalEditorHierarchyScopeProvider;
957
970
  export declare function updateLocalEditorMaterialOwnerDiagnostics(current: readonly EditorDiagnostic[], item: BabylonEditorProjectionMaterialProfileDiagnostic): EditorDiagnostic[];
958
971
  export declare function createLocalEditorMaterialOwnerDiagnostic(item: BabylonEditorProjectionMaterialProfileDiagnostic): EditorDiagnostic | null;
959
972
  export declare function summarizeLocalEditorAuthoringFailure(result: AuthoringCommandResult<unknown>): LocalEditorAuthoringFailureStatus;