@fps-games/editor 0.2.1-beta.3 → 0.2.1-beta.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (514) hide show
  1. package/dist/build-info.json +44 -44
  2. package/dist/editor-commands/capabilities/assets.d.ts +8 -0
  3. package/dist/editor-commands/capabilities/assets.d.ts.map +1 -0
  4. package/dist/{agent-bridge → editor-commands}/capabilities/assets.js +41 -41
  5. package/dist/editor-commands/capabilities/assets.js.map +1 -0
  6. package/dist/editor-commands/capabilities/editor-state.d.ts +5 -0
  7. package/dist/editor-commands/capabilities/editor-state.d.ts.map +1 -0
  8. package/dist/{agent-bridge → editor-commands}/capabilities/editor-state.js +22 -22
  9. package/dist/editor-commands/capabilities/editor-state.js.map +1 -0
  10. package/dist/editor-commands/capabilities/hierarchy.d.ts +4 -0
  11. package/dist/editor-commands/capabilities/hierarchy.d.ts.map +1 -0
  12. package/dist/{agent-bridge → editor-commands}/capabilities/hierarchy.js +5 -5
  13. package/dist/editor-commands/capabilities/hierarchy.js.map +1 -0
  14. package/dist/editor-commands/capabilities/host-lifecycle.d.ts +11 -0
  15. package/dist/editor-commands/capabilities/host-lifecycle.d.ts.map +1 -0
  16. package/dist/editor-commands/capabilities/host-lifecycle.js +149 -0
  17. package/dist/editor-commands/capabilities/host-lifecycle.js.map +1 -0
  18. package/dist/editor-commands/capabilities/prefabs.d.ts +5 -0
  19. package/dist/editor-commands/capabilities/prefabs.d.ts.map +1 -0
  20. package/dist/{agent-bridge → editor-commands}/capabilities/prefabs.js +93 -93
  21. package/dist/editor-commands/capabilities/prefabs.js.map +1 -0
  22. package/dist/editor-commands/capabilities/scene-objects.d.ts +8 -0
  23. package/dist/editor-commands/capabilities/scene-objects.d.ts.map +1 -0
  24. package/dist/editor-commands/capabilities/scene-objects.js +480 -0
  25. package/dist/editor-commands/capabilities/scene-objects.js.map +1 -0
  26. package/dist/editor-commands/capabilities/selection.d.ts +5 -0
  27. package/dist/editor-commands/capabilities/selection.d.ts.map +1 -0
  28. package/dist/editor-commands/capabilities/selection.js +60 -0
  29. package/dist/editor-commands/capabilities/selection.js.map +1 -0
  30. package/dist/editor-commands/capabilities/shadows.d.ts +5 -0
  31. package/dist/editor-commands/capabilities/shadows.d.ts.map +1 -0
  32. package/dist/{agent-bridge → editor-commands}/capabilities/shadows.js +74 -74
  33. package/dist/editor-commands/capabilities/shadows.js.map +1 -0
  34. package/dist/editor-commands/capabilities/transform.d.ts +5 -0
  35. package/dist/editor-commands/capabilities/transform.d.ts.map +1 -0
  36. package/dist/editor-commands/capabilities/transform.js +164 -0
  37. package/dist/editor-commands/capabilities/transform.js.map +1 -0
  38. package/dist/editor-commands/capabilities/ui-regions.d.ts +4 -0
  39. package/dist/editor-commands/capabilities/ui-regions.d.ts.map +1 -0
  40. package/dist/{agent-bridge → editor-commands}/capabilities/ui-regions.js +55 -57
  41. package/dist/editor-commands/capabilities/ui-regions.js.map +1 -0
  42. package/dist/editor-commands/capabilities/viewport.d.ts +5 -0
  43. package/dist/editor-commands/capabilities/viewport.d.ts.map +1 -0
  44. package/dist/{agent-bridge → editor-commands}/capabilities/viewport.js +100 -100
  45. package/dist/editor-commands/capabilities/viewport.js.map +1 -0
  46. package/dist/editor-commands/command-sources.d.ts +7 -0
  47. package/dist/editor-commands/command-sources.d.ts.map +1 -0
  48. package/dist/editor-commands/command-sources.js +34 -0
  49. package/dist/editor-commands/command-sources.js.map +1 -0
  50. package/dist/editor-commands/diagnostics.d.ts +12 -0
  51. package/dist/editor-commands/diagnostics.d.ts.map +1 -0
  52. package/dist/{agent-bridge → editor-commands}/diagnostics.js +4 -4
  53. package/dist/editor-commands/diagnostics.js.map +1 -0
  54. package/dist/{agent-bridge → editor-commands}/index.d.ts +1 -1
  55. package/dist/editor-commands/index.d.ts.map +1 -0
  56. package/dist/{agent-bridge → editor-commands}/index.js +1 -1
  57. package/dist/editor-commands/index.js.map +1 -0
  58. package/dist/editor-commands/register.d.ts +4 -0
  59. package/dist/editor-commands/register.d.ts.map +1 -0
  60. package/dist/{agent-bridge → editor-commands}/register.js +323 -286
  61. package/dist/editor-commands/register.js.map +1 -0
  62. package/dist/{agent-bridge → editor-commands}/shared.d.ts +80 -80
  63. package/dist/editor-commands/shared.d.ts.map +1 -0
  64. package/dist/{agent-bridge → editor-commands}/shared.js +29 -29
  65. package/dist/editor-commands/shared.js.map +1 -0
  66. package/dist/editor-commands/source-types.d.ts +110 -0
  67. package/dist/editor-commands/source-types.d.ts.map +1 -0
  68. package/dist/editor-commands/source-types.js.map +1 -0
  69. package/dist/editor-plugin-commands.d.ts +4 -0
  70. package/dist/editor-plugin-commands.d.ts.map +1 -0
  71. package/dist/editor-plugin-commands.js +18 -0
  72. package/dist/editor-plugin-commands.js.map +1 -0
  73. package/dist/index.d.ts +2 -2
  74. package/dist/index.d.ts.map +1 -1
  75. package/dist/index.js +1 -1
  76. package/dist/index.js.map +1 -1
  77. package/dist/local-editor-commands.d.ts +2 -0
  78. package/dist/local-editor-commands.d.ts.map +1 -0
  79. package/dist/local-editor-commands.js +2 -0
  80. package/dist/local-editor-commands.js.map +1 -0
  81. package/dist/local-editor-harness.d.ts +35 -21
  82. package/dist/local-editor-harness.d.ts.map +1 -1
  83. package/dist/local-editor-harness.js +1721 -367
  84. package/dist/local-editor-harness.js.map +1 -1
  85. package/dist/local-editor-prefab-stage-transaction.d.ts +2 -1
  86. package/dist/local-editor-prefab-stage-transaction.d.ts.map +1 -1
  87. package/dist/local-editor-prefab-stage-transaction.js +6 -5
  88. package/dist/local-editor-prefab-stage-transaction.js.map +1 -1
  89. package/dist/local-editor-scene-view-interaction-runtime.d.ts.map +1 -1
  90. package/dist/local-editor-scene-view-interaction-runtime.js +2 -5
  91. package/dist/local-editor-scene-view-interaction-runtime.js.map +1 -1
  92. package/dist/playable-local-editor-entry.d.ts +10 -0
  93. package/dist/playable-local-editor-entry.d.ts.map +1 -1
  94. package/dist/playable-local-editor-entry.js +10 -2
  95. package/dist/playable-local-editor-entry.js.map +1 -1
  96. package/dist/playable-local-editor-host.d.ts +3 -32
  97. package/dist/playable-local-editor-host.d.ts.map +1 -1
  98. package/dist/playable-local-editor-host.js +6 -70
  99. package/dist/playable-local-editor-host.js.map +1 -1
  100. package/dist/playable-product-local-editor.d.ts +1 -2
  101. package/dist/playable-product-local-editor.d.ts.map +1 -1
  102. package/dist/playable-product-local-editor.js +0 -1
  103. package/dist/playable-product-local-editor.js.map +1 -1
  104. package/dist/playable-product-projection-preview.d.ts.map +1 -1
  105. package/dist/playable-product-projection-preview.js +1 -1
  106. package/dist/playable-product-projection-preview.js.map +1 -1
  107. package/dist/playable-product-scene-capabilities.d.ts +0 -2
  108. package/dist/playable-product-scene-capabilities.d.ts.map +1 -1
  109. package/dist/playable-product-scene-capabilities.js +33 -6
  110. package/dist/playable-product-scene-capabilities.js.map +1 -1
  111. package/dist/playable-runtime-babylon.d.ts +4 -0
  112. package/dist/playable-runtime-babylon.d.ts.map +1 -1
  113. package/dist/playable-runtime-babylon.js +4 -0
  114. package/dist/playable-runtime-babylon.js.map +1 -1
  115. package/dist/playable-sdk.d.ts +1 -1
  116. package/dist/playable-sdk.d.ts.map +1 -1
  117. package/dist/playable-sdk.js.map +1 -1
  118. package/dist/playable-standard-project.d.ts +0 -2
  119. package/dist/playable-standard-project.d.ts.map +1 -1
  120. package/dist/playable-standard-project.js +1 -2
  121. package/dist/playable-standard-project.js.map +1 -1
  122. package/dist/project-service-projection.d.ts +16 -0
  123. package/dist/project-service-projection.d.ts.map +1 -0
  124. package/dist/project-service-projection.js +67 -0
  125. package/dist/project-service-projection.js.map +1 -0
  126. package/node_modules/@fps-games/babylon-renderer/dist/post-process/babylon-default-pipeline.d.ts +18 -0
  127. package/node_modules/@fps-games/babylon-renderer/dist/post-process/babylon-default-pipeline.d.ts.map +1 -1
  128. package/node_modules/@fps-games/babylon-renderer/dist/post-process/babylon-default-pipeline.js +54 -18
  129. package/node_modules/@fps-games/babylon-renderer/dist/post-process/babylon-default-pipeline.js.map +1 -1
  130. package/node_modules/@fps-games/babylon-renderer/package.json +9 -9
  131. package/node_modules/@fps-games/editor-babylon/dist/projection.d.ts +1 -0
  132. package/node_modules/@fps-games/editor-babylon/dist/projection.d.ts.map +1 -1
  133. package/node_modules/@fps-games/editor-babylon/dist/projection.js +1 -1
  134. package/node_modules/@fps-games/editor-babylon/dist/projection.js.map +1 -1
  135. package/node_modules/@fps-games/editor-babylon/dist/selection-presentation-controller.d.ts.map +1 -1
  136. package/node_modules/@fps-games/editor-babylon/dist/selection-presentation-controller.js +127 -13
  137. package/node_modules/@fps-games/editor-babylon/dist/selection-presentation-controller.js.map +1 -1
  138. package/node_modules/@fps-games/editor-babylon/dist/transform-gizmo-controller.d.ts.map +1 -1
  139. package/node_modules/@fps-games/editor-babylon/dist/transform-gizmo-controller.js +66 -1
  140. package/node_modules/@fps-games/editor-babylon/dist/transform-gizmo-controller.js.map +1 -1
  141. package/node_modules/@fps-games/editor-babylon/package.json +6 -6
  142. package/node_modules/@fps-games/editor-browser/dist/editor-command-service-client.d.ts +32 -0
  143. package/node_modules/@fps-games/editor-browser/dist/editor-command-service-client.d.ts.map +1 -0
  144. package/node_modules/@fps-games/editor-browser/dist/editor-command-service-client.js +254 -0
  145. package/node_modules/@fps-games/editor-browser/dist/editor-command-service-client.js.map +1 -0
  146. package/node_modules/@fps-games/editor-browser/dist/index.d.ts +3 -1
  147. package/node_modules/@fps-games/editor-browser/dist/index.d.ts.map +1 -1
  148. package/node_modules/@fps-games/editor-browser/dist/index.js +2 -0
  149. package/node_modules/@fps-games/editor-browser/dist/index.js.map +1 -1
  150. package/node_modules/@fps-games/editor-browser/dist/local-editor-command-center.d.ts +68 -0
  151. package/node_modules/@fps-games/editor-browser/dist/local-editor-command-center.d.ts.map +1 -0
  152. package/node_modules/@fps-games/editor-browser/dist/local-editor-command-center.js +650 -0
  153. package/node_modules/@fps-games/editor-browser/dist/local-editor-command-center.js.map +1 -0
  154. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-formal-surface-visibility.d.ts +1 -0
  155. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-formal-surface-visibility.d.ts.map +1 -1
  156. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-formal-surface-visibility.js +22 -0
  157. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-formal-surface-visibility.js.map +1 -1
  158. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-controller.d.ts +8 -0
  159. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-controller.d.ts.map +1 -1
  160. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-controller.js +117 -6
  161. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-controller.js.map +1 -1
  162. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-view.d.ts +14 -1
  163. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-view.d.ts.map +1 -1
  164. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-view.js +100 -1
  165. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-view.js.map +1 -1
  166. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-panels.d.ts +8 -1
  167. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-panels.d.ts.map +1 -1
  168. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-panels.js +75 -2
  169. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-panels.js.map +1 -1
  170. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-types.d.ts +37 -12
  171. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-types.d.ts.map +1 -1
  172. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-types.js.map +1 -1
  173. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui.d.ts +25 -2
  174. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui.d.ts.map +1 -1
  175. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui.js +332 -107
  176. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui.js.map +1 -1
  177. package/node_modules/@fps-games/editor-browser/package.json +7 -7
  178. package/node_modules/@fps-games/editor-core/dist/editor-authoring-host.d.ts +107 -0
  179. package/node_modules/@fps-games/editor-core/dist/editor-authoring-host.d.ts.map +1 -0
  180. package/node_modules/@fps-games/editor-core/dist/editor-authoring-host.js +1211 -0
  181. package/node_modules/@fps-games/editor-core/dist/editor-authoring-host.js.map +1 -0
  182. package/node_modules/@fps-games/editor-core/dist/editor-command-capability-adapter.d.ts +34 -0
  183. package/node_modules/@fps-games/editor-core/dist/editor-command-capability-adapter.d.ts.map +1 -0
  184. package/node_modules/@fps-games/editor-core/dist/editor-command-capability-adapter.js +260 -0
  185. package/node_modules/@fps-games/editor-core/dist/editor-command-capability-adapter.js.map +1 -0
  186. package/node_modules/@fps-games/editor-core/dist/editor-command-composed-authority.d.ts +9 -0
  187. package/node_modules/@fps-games/editor-core/dist/editor-command-composed-authority.d.ts.map +1 -0
  188. package/node_modules/@fps-games/editor-core/dist/editor-command-composed-authority.js +14 -0
  189. package/node_modules/@fps-games/editor-core/dist/editor-command-composed-authority.js.map +1 -0
  190. package/node_modules/@fps-games/editor-core/dist/editor-command-observability.d.ts +18 -0
  191. package/node_modules/@fps-games/editor-core/dist/editor-command-observability.d.ts.map +1 -0
  192. package/node_modules/@fps-games/editor-core/dist/editor-command-observability.js +113 -0
  193. package/node_modules/@fps-games/editor-core/dist/editor-command-observability.js.map +1 -0
  194. package/node_modules/@fps-games/editor-core/dist/editor-command-system.d.ts +82 -0
  195. package/node_modules/@fps-games/editor-core/dist/editor-command-system.d.ts.map +1 -0
  196. package/node_modules/@fps-games/editor-core/dist/editor-command-system.js +1098 -0
  197. package/node_modules/@fps-games/editor-core/dist/editor-command-system.js.map +1 -0
  198. package/node_modules/@fps-games/editor-core/dist/editor-plugin-host.d.ts +6 -7
  199. package/node_modules/@fps-games/editor-core/dist/editor-plugin-host.d.ts.map +1 -1
  200. package/node_modules/@fps-games/editor-core/dist/editor-plugin-host.js +62 -103
  201. package/node_modules/@fps-games/editor-core/dist/editor-plugin-host.js.map +1 -1
  202. package/node_modules/@fps-games/editor-core/dist/editor-service-gateway.d.ts +30 -0
  203. package/node_modules/@fps-games/editor-core/dist/editor-service-gateway.d.ts.map +1 -0
  204. package/node_modules/@fps-games/editor-core/dist/editor-service-gateway.js +540 -0
  205. package/node_modules/@fps-games/editor-core/dist/editor-service-gateway.js.map +1 -0
  206. package/node_modules/@fps-games/editor-core/dist/editor-session-authority.d.ts +9 -0
  207. package/node_modules/@fps-games/editor-core/dist/editor-session-authority.d.ts.map +1 -0
  208. package/node_modules/@fps-games/editor-core/dist/editor-session-authority.js +61 -0
  209. package/node_modules/@fps-games/editor-core/dist/editor-session-authority.js.map +1 -0
  210. package/node_modules/@fps-games/editor-core/dist/editor-session.d.ts +55 -0
  211. package/node_modules/@fps-games/editor-core/dist/editor-session.d.ts.map +1 -1
  212. package/node_modules/@fps-games/editor-core/dist/editor-session.js +247 -6
  213. package/node_modules/@fps-games/editor-core/dist/editor-session.js.map +1 -1
  214. package/node_modules/@fps-games/editor-core/dist/index.d.ts +6 -2
  215. package/node_modules/@fps-games/editor-core/dist/index.d.ts.map +1 -1
  216. package/node_modules/@fps-games/editor-core/dist/index.js +6 -2
  217. package/node_modules/@fps-games/editor-core/dist/index.js.map +1 -1
  218. package/node_modules/@fps-games/editor-core/package.json +6 -6
  219. package/node_modules/@fps-games/editor-forge-play/dist/index.d.ts +0 -1
  220. package/node_modules/@fps-games/editor-forge-play/dist/index.d.ts.map +1 -1
  221. package/node_modules/@fps-games/editor-forge-play/dist/index.js +0 -1
  222. package/node_modules/@fps-games/editor-forge-play/dist/index.js.map +1 -1
  223. package/node_modules/@fps-games/editor-forge-play/package.json +2 -2
  224. package/node_modules/@fps-games/editor-playable-sdk/dist/bridge-command/protocol.d.ts +2 -0
  225. package/node_modules/@fps-games/editor-playable-sdk/dist/bridge-command/protocol.d.ts.map +1 -1
  226. package/node_modules/@fps-games/editor-playable-sdk/dist/document/helpers.d.ts.map +1 -1
  227. package/node_modules/@fps-games/editor-playable-sdk/dist/document/helpers.js +41 -1
  228. package/node_modules/@fps-games/editor-playable-sdk/dist/document/helpers.js.map +1 -1
  229. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/forge-play-types.d.ts +27 -1
  230. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/forge-play-types.d.ts.map +1 -1
  231. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/forge-play-types.js.map +1 -1
  232. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/forge-play.d.ts +2 -0
  233. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/forge-play.d.ts.map +1 -1
  234. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/forge-play.js +214 -7
  235. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/forge-play.js.map +1 -1
  236. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/host-controller.d.ts +1 -0
  237. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/host-controller.d.ts.map +1 -1
  238. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/host-controller.js +11 -3
  239. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/host-controller.js.map +1 -1
  240. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/index.d.ts +2 -4
  241. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/index.d.ts.map +1 -1
  242. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/index.js +0 -1
  243. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/index.js.map +1 -1
  244. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/lifecycle.d.ts.map +1 -1
  245. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/lifecycle.js +77 -31
  246. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/lifecycle.js.map +1 -1
  247. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/types.d.ts +8 -1
  248. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/types.d.ts.map +1 -1
  249. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/types.js.map +1 -1
  250. package/node_modules/@fps-games/editor-playable-sdk/dist/material-binding/asset-fields.d.ts +21 -1
  251. package/node_modules/@fps-games/editor-playable-sdk/dist/material-binding/asset-fields.d.ts.map +1 -1
  252. package/node_modules/@fps-games/editor-playable-sdk/dist/material-binding/asset-fields.js +90 -4
  253. package/node_modules/@fps-games/editor-playable-sdk/dist/material-binding/asset-fields.js.map +1 -1
  254. package/node_modules/@fps-games/editor-playable-sdk/dist/material-binding/binding.d.ts +27 -1
  255. package/node_modules/@fps-games/editor-playable-sdk/dist/material-binding/binding.d.ts.map +1 -1
  256. package/node_modules/@fps-games/editor-playable-sdk/dist/material-binding/binding.js +161 -1
  257. package/node_modules/@fps-games/editor-playable-sdk/dist/material-binding/binding.js.map +1 -1
  258. package/node_modules/@fps-games/editor-playable-sdk/dist/material-binding/inspector.d.ts +2 -2
  259. package/node_modules/@fps-games/editor-playable-sdk/dist/material-binding/inspector.d.ts.map +1 -1
  260. package/node_modules/@fps-games/editor-playable-sdk/dist/material-binding/inspector.js +5 -92
  261. package/node_modules/@fps-games/editor-playable-sdk/dist/material-binding/inspector.js.map +1 -1
  262. package/node_modules/@fps-games/editor-playable-sdk/dist/material-binding/scene-inspector.d.ts +7 -0
  263. package/node_modules/@fps-games/editor-playable-sdk/dist/material-binding/scene-inspector.d.ts.map +1 -1
  264. package/node_modules/@fps-games/editor-playable-sdk/dist/material-binding/scene-inspector.js +26 -9
  265. package/node_modules/@fps-games/editor-playable-sdk/dist/material-binding/scene-inspector.js.map +1 -1
  266. package/node_modules/@fps-games/editor-playable-sdk/dist/material-binding/slot-inspector.d.ts +9 -0
  267. package/node_modules/@fps-games/editor-playable-sdk/dist/material-binding/slot-inspector.d.ts.map +1 -1
  268. package/node_modules/@fps-games/editor-playable-sdk/dist/material-binding/slot-inspector.js +19 -8
  269. package/node_modules/@fps-games/editor-playable-sdk/dist/material-binding/slot-inspector.js.map +1 -1
  270. package/node_modules/@fps-games/editor-playable-sdk/dist/prefab-stage/material-override-inspector.d.ts +5 -0
  271. package/node_modules/@fps-games/editor-playable-sdk/dist/prefab-stage/material-override-inspector.d.ts.map +1 -1
  272. package/node_modules/@fps-games/editor-playable-sdk/dist/prefab-stage/material-override-inspector.js +16 -4
  273. package/node_modules/@fps-games/editor-playable-sdk/dist/prefab-stage/material-override-inspector.js.map +1 -1
  274. package/node_modules/@fps-games/editor-playable-sdk/dist/prefab-stage/stage-inspector.d.ts +9 -0
  275. package/node_modules/@fps-games/editor-playable-sdk/dist/prefab-stage/stage-inspector.d.ts.map +1 -1
  276. package/node_modules/@fps-games/editor-playable-sdk/dist/prefab-stage/stage-inspector.js +12 -2
  277. package/node_modules/@fps-games/editor-playable-sdk/dist/prefab-stage/stage-inspector.js.map +1 -1
  278. package/node_modules/@fps-games/editor-playable-sdk/dist/product/ground-decal.d.ts +2 -1
  279. package/node_modules/@fps-games/editor-playable-sdk/dist/product/ground-decal.d.ts.map +1 -1
  280. package/node_modules/@fps-games/editor-playable-sdk/dist/product/ground-decal.js +10 -5
  281. package/node_modules/@fps-games/editor-playable-sdk/dist/product/ground-decal.js.map +1 -1
  282. package/node_modules/@fps-games/editor-playable-sdk/dist/product/index.d.ts +1 -0
  283. package/node_modules/@fps-games/editor-playable-sdk/dist/product/index.d.ts.map +1 -1
  284. package/node_modules/@fps-games/editor-playable-sdk/dist/product/index.js +1 -0
  285. package/node_modules/@fps-games/editor-playable-sdk/dist/product/index.js.map +1 -1
  286. package/node_modules/@fps-games/editor-playable-sdk/dist/product/project-host-services.d.ts +17 -82
  287. package/node_modules/@fps-games/editor-playable-sdk/dist/product/project-host-services.d.ts.map +1 -1
  288. package/node_modules/@fps-games/editor-playable-sdk/dist/product/project-host-services.js +53 -57
  289. package/node_modules/@fps-games/editor-playable-sdk/dist/product/project-host-services.js.map +1 -1
  290. package/node_modules/@fps-games/editor-playable-sdk/dist/product/scene-session.d.ts.map +1 -1
  291. package/node_modules/@fps-games/editor-playable-sdk/dist/product/scene-session.js +3 -2
  292. package/node_modules/@fps-games/editor-playable-sdk/dist/product/scene-session.js.map +1 -1
  293. package/node_modules/@fps-games/editor-playable-sdk/dist/product/standard-authoring-commands.d.ts +10 -0
  294. package/node_modules/@fps-games/editor-playable-sdk/dist/product/standard-authoring-commands.d.ts.map +1 -0
  295. package/node_modules/@fps-games/editor-playable-sdk/dist/product/standard-authoring-commands.js +256 -0
  296. package/node_modules/@fps-games/editor-playable-sdk/dist/product/standard-authoring-commands.js.map +1 -0
  297. package/node_modules/@fps-games/editor-playable-sdk/dist/product/standard-scene-assembly.d.ts.map +1 -1
  298. package/node_modules/@fps-games/editor-playable-sdk/dist/product/standard-scene-assembly.js +7 -5
  299. package/node_modules/@fps-games/editor-playable-sdk/dist/product/standard-scene-assembly.js.map +1 -1
  300. package/node_modules/@fps-games/editor-playable-sdk/dist/scene-source/client.d.ts.map +1 -1
  301. package/node_modules/@fps-games/editor-playable-sdk/dist/scene-source/client.js +8 -0
  302. package/node_modules/@fps-games/editor-playable-sdk/dist/scene-source/client.js.map +1 -1
  303. package/node_modules/@fps-games/editor-playable-sdk/dist/scene-source/types.d.ts +1 -0
  304. package/node_modules/@fps-games/editor-playable-sdk/dist/scene-source/types.d.ts.map +1 -1
  305. package/node_modules/@fps-games/editor-playable-sdk/dist/scene-source/types.js.map +1 -1
  306. package/node_modules/@fps-games/editor-playable-sdk/dist/upgrade-doctor/inspectors.js +134 -12
  307. package/node_modules/@fps-games/editor-playable-sdk/dist/upgrade-doctor/inspectors.js.map +1 -1
  308. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/editor-scene-workflow.d.ts.map +1 -1
  309. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/editor-scene-workflow.js +47 -0
  310. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/editor-scene-workflow.js.map +1 -1
  311. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/editor-service-vite.d.ts +27 -0
  312. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/editor-service-vite.d.ts.map +1 -0
  313. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/editor-service-vite.js +592 -0
  314. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/editor-service-vite.js.map +1 -0
  315. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/index.d.ts +3 -1
  316. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/index.d.ts.map +1 -1
  317. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/index.js +2 -1
  318. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/index.js.map +1 -1
  319. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/plugin.d.ts.map +1 -1
  320. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/plugin.js +61 -6
  321. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/plugin.js.map +1 -1
  322. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/product-adapter.d.ts +0 -2
  323. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/product-adapter.d.ts.map +1 -1
  324. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/product-adapter.js +1 -10
  325. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/product-adapter.js.map +1 -1
  326. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/product-authoring-api.d.ts.map +1 -1
  327. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/product-authoring-api.js +21 -0
  328. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/product-authoring-api.js.map +1 -1
  329. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/project-authoring-backend.d.ts +13 -0
  330. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/project-authoring-backend.d.ts.map +1 -0
  331. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/project-authoring-backend.js +18 -0
  332. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/project-authoring-backend.js.map +1 -0
  333. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/project-editor-service.d.ts +28 -0
  334. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/project-editor-service.d.ts.map +1 -0
  335. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/project-editor-service.js +863 -0
  336. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/project-editor-service.js.map +1 -0
  337. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/types.d.ts +2 -0
  338. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/types.d.ts.map +1 -1
  339. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/types.js.map +1 -1
  340. package/node_modules/@fps-games/editor-playable-sdk/package.json +6 -6
  341. package/node_modules/@fps-games/editor-protocol/dist/editor-command-capabilities.d.ts +1626 -0
  342. package/node_modules/@fps-games/editor-protocol/dist/editor-command-capabilities.d.ts.map +1 -0
  343. package/node_modules/@fps-games/editor-protocol/dist/{agent-bridge.js → editor-command-capabilities.js} +766 -620
  344. package/node_modules/@fps-games/editor-protocol/dist/editor-command-capabilities.js.map +1 -0
  345. package/node_modules/@fps-games/editor-protocol/dist/editor-command-trace.d.ts +69 -0
  346. package/node_modules/@fps-games/editor-protocol/dist/editor-command-trace.d.ts.map +1 -0
  347. package/node_modules/@fps-games/editor-protocol/dist/editor-command-trace.js +22 -0
  348. package/node_modules/@fps-games/editor-protocol/dist/editor-command-trace.js.map +1 -0
  349. package/node_modules/@fps-games/editor-protocol/dist/editor-command.d.ts +136 -0
  350. package/node_modules/@fps-games/editor-protocol/dist/editor-command.d.ts.map +1 -0
  351. package/node_modules/@fps-games/editor-protocol/dist/editor-command.js +2 -0
  352. package/node_modules/@fps-games/editor-protocol/dist/editor-command.js.map +1 -0
  353. package/node_modules/@fps-games/editor-protocol/dist/editor-service.d.ts +225 -0
  354. package/node_modules/@fps-games/editor-protocol/dist/editor-service.d.ts.map +1 -0
  355. package/node_modules/@fps-games/editor-protocol/dist/editor-service.js +4 -0
  356. package/node_modules/@fps-games/editor-protocol/dist/editor-service.js.map +1 -0
  357. package/node_modules/@fps-games/editor-protocol/dist/index.d.ts +6 -3
  358. package/node_modules/@fps-games/editor-protocol/dist/index.d.ts.map +1 -1
  359. package/node_modules/@fps-games/editor-protocol/dist/index.js +6 -3
  360. package/node_modules/@fps-games/editor-protocol/dist/index.js.map +1 -1
  361. package/node_modules/@fps-games/editor-protocol/package.json +2 -2
  362. package/node_modules/@fps-games/editor-tooling/package.json +3 -3
  363. package/node_modules/@fps-games/editor-ui/package.json +1 -1
  364. package/node_modules/@fps-games/playable-assets/package.json +1 -1
  365. package/node_modules/@fps-games/playable-contracts/package.json +1 -1
  366. package/node_modules/@fps-games/playable-rendering/package.json +2 -2
  367. package/node_modules/@fps-games/playable-runtime/package.json +12 -12
  368. package/node_modules/@fps-games/playable-runtime-data/package.json +4 -4
  369. package/node_modules/@fps-games/playable-scene/package.json +2 -2
  370. package/node_modules/@fps-games/plugin-api/package.json +1 -1
  371. package/node_modules/@fps-games/plugin-assets/dist/version.d.ts +1 -1
  372. package/node_modules/@fps-games/plugin-assets/dist/version.js +1 -1
  373. package/node_modules/@fps-games/plugin-assets/dist/version.js.map +1 -1
  374. package/node_modules/@fps-games/plugin-assets/package.json +6 -6
  375. package/node_modules/@fps-games/plugin-hierarchy/dist/kernel.d.ts +1 -0
  376. package/node_modules/@fps-games/plugin-hierarchy/dist/kernel.d.ts.map +1 -1
  377. package/node_modules/@fps-games/plugin-hierarchy/dist/kernel.js +78 -4
  378. package/node_modules/@fps-games/plugin-hierarchy/dist/kernel.js.map +1 -1
  379. package/node_modules/@fps-games/plugin-hierarchy/dist/version.d.ts +1 -1
  380. package/node_modules/@fps-games/plugin-hierarchy/dist/version.js +1 -1
  381. package/node_modules/@fps-games/plugin-hierarchy/dist/version.js.map +1 -1
  382. package/node_modules/@fps-games/plugin-hierarchy/package.json +5 -5
  383. package/node_modules/@fps-games/plugin-host/package.json +2 -2
  384. package/node_modules/@fps-games/plugin-markers/dist/version.d.ts +1 -1
  385. package/node_modules/@fps-games/plugin-markers/dist/version.js +1 -1
  386. package/node_modules/@fps-games/plugin-markers/dist/version.js.map +1 -1
  387. package/node_modules/@fps-games/plugin-markers/package.json +5 -5
  388. package/node_modules/@fps-games/plugin-materials/dist/version.d.ts +1 -1
  389. package/node_modules/@fps-games/plugin-materials/dist/version.js +1 -1
  390. package/node_modules/@fps-games/plugin-materials/dist/version.js.map +1 -1
  391. package/node_modules/@fps-games/plugin-materials/package.json +5 -5
  392. package/node_modules/@fps-games/plugin-rendering/dist/version.d.ts +1 -1
  393. package/node_modules/@fps-games/plugin-rendering/dist/version.js +1 -1
  394. package/node_modules/@fps-games/plugin-rendering/dist/version.js.map +1 -1
  395. package/node_modules/@fps-games/plugin-rendering/package.json +5 -5
  396. package/node_modules/@fps-games/plugin-scene/dist/version.d.ts +1 -1
  397. package/node_modules/@fps-games/plugin-scene/dist/version.js +1 -1
  398. package/node_modules/@fps-games/plugin-scene/dist/version.js.map +1 -1
  399. package/node_modules/@fps-games/plugin-scene/package.json +5 -5
  400. package/node_modules/@fps-games/plugin-shadow-map-experiment/dist/version.d.ts +1 -1
  401. package/node_modules/@fps-games/plugin-shadow-map-experiment/dist/version.js +1 -1
  402. package/node_modules/@fps-games/plugin-shadow-map-experiment/dist/version.js.map +1 -1
  403. package/node_modules/@fps-games/plugin-shadow-map-experiment/package.json +5 -5
  404. package/node_modules/@fps-games/plugin-shadows/dist/version.d.ts +1 -1
  405. package/node_modules/@fps-games/plugin-shadows/dist/version.js +1 -1
  406. package/node_modules/@fps-games/plugin-shadows/dist/version.js.map +1 -1
  407. package/node_modules/@fps-games/plugin-shadows/package.json +7 -7
  408. package/package.json +23 -23
  409. package/dist/agent-bridge/capabilities/assets.d.ts +0 -8
  410. package/dist/agent-bridge/capabilities/assets.d.ts.map +0 -1
  411. package/dist/agent-bridge/capabilities/assets.js.map +0 -1
  412. package/dist/agent-bridge/capabilities/editor-state.d.ts +0 -5
  413. package/dist/agent-bridge/capabilities/editor-state.d.ts.map +0 -1
  414. package/dist/agent-bridge/capabilities/editor-state.js.map +0 -1
  415. package/dist/agent-bridge/capabilities/hierarchy.d.ts +0 -4
  416. package/dist/agent-bridge/capabilities/hierarchy.d.ts.map +0 -1
  417. package/dist/agent-bridge/capabilities/hierarchy.js.map +0 -1
  418. package/dist/agent-bridge/capabilities/host-lifecycle.d.ts +0 -11
  419. package/dist/agent-bridge/capabilities/host-lifecycle.d.ts.map +0 -1
  420. package/dist/agent-bridge/capabilities/host-lifecycle.js +0 -149
  421. package/dist/agent-bridge/capabilities/host-lifecycle.js.map +0 -1
  422. package/dist/agent-bridge/capabilities/prefabs.d.ts +0 -5
  423. package/dist/agent-bridge/capabilities/prefabs.d.ts.map +0 -1
  424. package/dist/agent-bridge/capabilities/prefabs.js.map +0 -1
  425. package/dist/agent-bridge/capabilities/scene-objects.d.ts +0 -8
  426. package/dist/agent-bridge/capabilities/scene-objects.d.ts.map +0 -1
  427. package/dist/agent-bridge/capabilities/scene-objects.js +0 -480
  428. package/dist/agent-bridge/capabilities/scene-objects.js.map +0 -1
  429. package/dist/agent-bridge/capabilities/selection.d.ts +0 -5
  430. package/dist/agent-bridge/capabilities/selection.d.ts.map +0 -1
  431. package/dist/agent-bridge/capabilities/selection.js +0 -60
  432. package/dist/agent-bridge/capabilities/selection.js.map +0 -1
  433. package/dist/agent-bridge/capabilities/shadows.d.ts +0 -5
  434. package/dist/agent-bridge/capabilities/shadows.d.ts.map +0 -1
  435. package/dist/agent-bridge/capabilities/shadows.js.map +0 -1
  436. package/dist/agent-bridge/capabilities/transform.d.ts +0 -5
  437. package/dist/agent-bridge/capabilities/transform.d.ts.map +0 -1
  438. package/dist/agent-bridge/capabilities/transform.js +0 -164
  439. package/dist/agent-bridge/capabilities/transform.js.map +0 -1
  440. package/dist/agent-bridge/capabilities/ui-regions.d.ts +0 -4
  441. package/dist/agent-bridge/capabilities/ui-regions.d.ts.map +0 -1
  442. package/dist/agent-bridge/capabilities/ui-regions.js.map +0 -1
  443. package/dist/agent-bridge/capabilities/viewport.d.ts +0 -5
  444. package/dist/agent-bridge/capabilities/viewport.d.ts.map +0 -1
  445. package/dist/agent-bridge/capabilities/viewport.js.map +0 -1
  446. package/dist/agent-bridge/capability-sources.d.ts +0 -7
  447. package/dist/agent-bridge/capability-sources.d.ts.map +0 -1
  448. package/dist/agent-bridge/capability-sources.js +0 -34
  449. package/dist/agent-bridge/capability-sources.js.map +0 -1
  450. package/dist/agent-bridge/diagnostics.d.ts +0 -12
  451. package/dist/agent-bridge/diagnostics.d.ts.map +0 -1
  452. package/dist/agent-bridge/diagnostics.js.map +0 -1
  453. package/dist/agent-bridge/index.d.ts.map +0 -1
  454. package/dist/agent-bridge/index.js.map +0 -1
  455. package/dist/agent-bridge/register.d.ts +0 -4
  456. package/dist/agent-bridge/register.d.ts.map +0 -1
  457. package/dist/agent-bridge/register.js.map +0 -1
  458. package/dist/agent-bridge/shared.d.ts.map +0 -1
  459. package/dist/agent-bridge/shared.js.map +0 -1
  460. package/dist/agent-bridge/source-types.d.ts +0 -110
  461. package/dist/agent-bridge/source-types.d.ts.map +0 -1
  462. package/dist/agent-bridge/source-types.js.map +0 -1
  463. package/dist/editor-plugin-agent-capabilities.d.ts +0 -4
  464. package/dist/editor-plugin-agent-capabilities.d.ts.map +0 -1
  465. package/dist/editor-plugin-agent-capabilities.js +0 -64
  466. package/dist/editor-plugin-agent-capabilities.js.map +0 -1
  467. package/dist/local-editor-agent-actions.d.ts +0 -43
  468. package/dist/local-editor-agent-actions.d.ts.map +0 -1
  469. package/dist/local-editor-agent-actions.js +0 -321
  470. package/dist/local-editor-agent-actions.js.map +0 -1
  471. package/dist/local-editor-agent-bridge-transport.d.ts +0 -129
  472. package/dist/local-editor-agent-bridge-transport.d.ts.map +0 -1
  473. package/dist/local-editor-agent-bridge-transport.js +0 -403
  474. package/dist/local-editor-agent-bridge-transport.js.map +0 -1
  475. package/dist/local-editor-agent-bridge.d.ts +0 -2
  476. package/dist/local-editor-agent-bridge.d.ts.map +0 -1
  477. package/dist/local-editor-agent-bridge.js +0 -2
  478. package/dist/local-editor-agent-bridge.js.map +0 -1
  479. package/dist/local-editor-agent-context.d.ts +0 -68
  480. package/dist/local-editor-agent-context.d.ts.map +0 -1
  481. package/dist/local-editor-agent-context.js +0 -716
  482. package/dist/local-editor-agent-context.js.map +0 -1
  483. package/node_modules/@fps-games/editor-core/dist/agent-bridge.d.ts +0 -22
  484. package/node_modules/@fps-games/editor-core/dist/agent-bridge.d.ts.map +0 -1
  485. package/node_modules/@fps-games/editor-core/dist/agent-bridge.js +0 -106
  486. package/node_modules/@fps-games/editor-core/dist/agent-bridge.js.map +0 -1
  487. package/node_modules/@fps-games/editor-core/dist/agent-interaction.d.ts +0 -17
  488. package/node_modules/@fps-games/editor-core/dist/agent-interaction.d.ts.map +0 -1
  489. package/node_modules/@fps-games/editor-core/dist/agent-interaction.js +0 -14
  490. package/node_modules/@fps-games/editor-core/dist/agent-interaction.js.map +0 -1
  491. package/node_modules/@fps-games/editor-forge-play/dist/agent-transport.d.ts +0 -23
  492. package/node_modules/@fps-games/editor-forge-play/dist/agent-transport.d.ts.map +0 -1
  493. package/node_modules/@fps-games/editor-forge-play/dist/agent-transport.js +0 -47
  494. package/node_modules/@fps-games/editor-forge-play/dist/agent-transport.js.map +0 -1
  495. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/agent-descriptions.d.ts +0 -112
  496. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/agent-descriptions.d.ts.map +0 -1
  497. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/agent-descriptions.js +0 -159
  498. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/agent-descriptions.js.map +0 -1
  499. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/session-metadata.d.ts +0 -15
  500. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/session-metadata.d.ts.map +0 -1
  501. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/session-metadata.js +0 -76
  502. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/session-metadata.js.map +0 -1
  503. package/node_modules/@fps-games/editor-protocol/dist/agent-bridge.d.ts +0 -1622
  504. package/node_modules/@fps-games/editor-protocol/dist/agent-bridge.d.ts.map +0 -1
  505. package/node_modules/@fps-games/editor-protocol/dist/agent-bridge.js.map +0 -1
  506. package/node_modules/@fps-games/editor-protocol/dist/agent-trace.d.ts +0 -68
  507. package/node_modules/@fps-games/editor-protocol/dist/agent-trace.d.ts.map +0 -1
  508. package/node_modules/@fps-games/editor-protocol/dist/agent-trace.js +0 -23
  509. package/node_modules/@fps-games/editor-protocol/dist/agent-trace.js.map +0 -1
  510. package/node_modules/@fps-games/editor-protocol/dist/agent.d.ts +0 -187
  511. package/node_modules/@fps-games/editor-protocol/dist/agent.d.ts.map +0 -1
  512. package/node_modules/@fps-games/editor-protocol/dist/agent.js +0 -5
  513. package/node_modules/@fps-games/editor-protocol/dist/agent.js.map +0 -1
  514. /package/dist/{agent-bridge → editor-commands}/source-types.js +0 -0
@@ -1,480 +0,0 @@
1
- import { validateSceneGraphDelete, } from '@fps-games/editor-core';
2
- import { EDITOR_AGENT_BRIDGE_CAPABILITY_ID, } from '@fps-games/editor-protocol';
3
- import { cloneVec3, createLocalEditorAgentBridgeFailure, editorTransformSnapshotToAgentTransform, isLocalEditorAgentBridgeVec3, } from '../diagnostics.js';
4
- import { findAgentBridgeVisibleAssetInfo } from './assets.js';
5
- import { cloneAgentBridgeSelection, getAgentBridgeSafeSceneHierarchy, getAgentBridgeSafeSceneReadModel, getAgentBridgeSafeSceneSelection, hasAgentBridgeSafeSceneScope, isAgentBridgeDocumentNodeLocked, isAgentBridgeDocumentNodeSelectable, isAgentBridgeHierarchyObjectSelectable, normalizeAgentBridgeIdList, normalizeAgentBridgeString, } from '../shared.js';
6
- const OBJECT_CREATE_FROM_ASSET_PROJECTION_WAIT_MS = 3000;
7
- export function createLocalEditorAgentBridgeObjectSource(state, options, renderUi, operations) {
8
- return {
9
- listObjects(input) {
10
- const document = state.session?.getState({ cloneDocuments: false }).workingDocument ?? null;
11
- if (state.mode !== 'editor' || !document)
12
- return [];
13
- return listAgentBridgeSceneObjects(state, options, document, input.includeUnselectable === true, operations);
14
- },
15
- resolveObject(input) {
16
- return resolveAgentBridgeObject(state, options, input, operations);
17
- },
18
- getObject(objectId) {
19
- const document = state.session?.getState({ cloneDocuments: false }).workingDocument ?? null;
20
- if (state.mode !== 'editor' || !document)
21
- return null;
22
- return createAgentBridgeSceneObject(state, options, document, objectId, getAgentBridgeSafeSceneHierarchy(operations));
23
- },
24
- createPrimitive(input) {
25
- return createAgentBridgePrimitiveObject(state, options, input, renderUi, operations);
26
- },
27
- createFromAsset(input) {
28
- return createAgentBridgeObjectFromAsset(state, options, input, renderUi, operations);
29
- },
30
- deleteObjects(input) {
31
- return deleteAgentBridgeObjects(state, options, input, renderUi, operations);
32
- },
33
- };
34
- }
35
- export function listAgentBridgeSceneObjects(state, options, document, includeUnselectable, operations) {
36
- const hierarchy = getAgentBridgeSafeSceneHierarchy(operations);
37
- return hierarchy
38
- .map(item => createAgentBridgeSceneObject(state, options, document, item.id, hierarchy))
39
- .filter((object) => !!object)
40
- .filter(object => includeUnselectable || object.selectable !== false);
41
- }
42
- export function createAgentBridgeSceneObject(state, options, document, objectId, hierarchyItems) {
43
- const item = hierarchyItems.find(candidate => candidate.id === objectId) ?? null;
44
- if (!item)
45
- return null;
46
- const projectionNode = options.documentAdapter.getProjectionNode(document, objectId);
47
- const runtimeTransform = state.projection?.readNodeTransform(objectId) ?? null;
48
- const documentTransform = projectionNode?.transform ?? null;
49
- const transform = editorTransformSnapshotToAgentTransform(runtimeTransform ?? documentTransform);
50
- const bounds = createAgentBridgeSceneObjectBounds(state.projection?.getSelectionBounds([objectId]) ?? null, transform?.position);
51
- const locked = isAgentBridgeDocumentNodeLocked(options, document, objectId);
52
- const selectable = isAgentBridgeDocumentNodeSelectable(options, document, objectId);
53
- return {
54
- id: objectId,
55
- name: projectionNode?.name,
56
- label: item?.label ?? projectionNode?.name ?? objectId,
57
- type: projectionNode?.runtimeKind ?? projectionNode?.helperKind ?? item?.role,
58
- path: createAgentBridgeHierarchyPath(objectId, hierarchyItems),
59
- parentId: item?.parentId ?? projectionNode?.parentId ?? null,
60
- selectable,
61
- locked,
62
- ...(transform ? { transform } : {}),
63
- ...(bounds ? { bounds } : {}),
64
- };
65
- }
66
- function createAgentBridgeSceneObjectBounds(bounds, fallbackCenter) {
67
- const record = bounds && typeof bounds === 'object' && !Array.isArray(bounds)
68
- ? bounds
69
- : null;
70
- const min = record ? readAgentBridgeFiniteVec3(record.min) : null;
71
- const max = record ? readAgentBridgeFiniteVec3(record.max) : null;
72
- const size = record ? readAgentBridgeFiniteVec3(record.size) : null;
73
- const center = record ? readAgentBridgeFiniteVec3(record.center) : null;
74
- const hasInvertedMinMax = !!min && !!max && (min.x > max.x
75
- || min.y > max.y
76
- || min.z > max.z);
77
- if (!hasInvertedMinMax && (min || max || size || center)) {
78
- return {
79
- ...(min ? { min } : {}),
80
- ...(max ? { max } : {}),
81
- ...(size ? { size } : {}),
82
- ...(center ? { center } : {}),
83
- };
84
- }
85
- if (!fallbackCenter || !isAgentBridgeFiniteVec3(fallbackCenter))
86
- return null;
87
- const safeCenter = cloneVec3(fallbackCenter);
88
- return {
89
- min: cloneVec3(safeCenter),
90
- max: cloneVec3(safeCenter),
91
- center: cloneVec3(safeCenter),
92
- size: { x: 0, y: 0, z: 0 },
93
- };
94
- }
95
- function readAgentBridgeFiniteVec3(value) {
96
- if (!value || typeof value !== 'object' || Array.isArray(value))
97
- return null;
98
- const record = value;
99
- const vec3 = {
100
- x: record.x,
101
- y: record.y,
102
- z: record.z,
103
- };
104
- return isAgentBridgeFiniteVec3(vec3) ? {
105
- x: vec3.x,
106
- y: vec3.y,
107
- z: vec3.z,
108
- } : null;
109
- }
110
- function isAgentBridgeFiniteVec3(value) {
111
- if (!value || typeof value !== 'object' || Array.isArray(value))
112
- return false;
113
- const record = value;
114
- return Number.isFinite(record.x)
115
- && Number.isFinite(record.y)
116
- && Number.isFinite(record.z);
117
- }
118
- function resolveAgentBridgeObject(state, options, input, operations) {
119
- const document = state.session?.getState({ cloneDocuments: false }).workingDocument ?? null;
120
- if (state.mode !== 'editor' || !document) {
121
- return { objects: [], resolvedObject: null, ambiguous: false };
122
- }
123
- const objects = listAgentBridgeSceneObjects(state, options, document, input.includeUnselectable === true, operations);
124
- const objectId = normalizeAgentBridgeString(input.objectId);
125
- const name = normalizeAgentBridgeString(input.name);
126
- const path = normalizeAgentBridgeString(input.path);
127
- const type = normalizeAgentBridgeString(input.type);
128
- const query = normalizeAgentBridgeString(input.query).toLowerCase();
129
- const matches = objects.filter(object => {
130
- if (objectId && object.id !== objectId)
131
- return false;
132
- if (name && object.name !== name && object.label !== name)
133
- return false;
134
- if (path && object.path !== path)
135
- return false;
136
- if (type && object.type !== type)
137
- return false;
138
- if (query && !agentBridgeObjectMatchesQuery(object, query))
139
- return false;
140
- return true;
141
- });
142
- return {
143
- objects: matches,
144
- resolvedObject: matches.length === 1 ? matches[0] : null,
145
- ambiguous: matches.length > 1,
146
- };
147
- }
148
- function createAgentBridgePrimitiveObject(state, options, input, renderUi, operations) {
149
- const shape = normalizeAgentBridgeString(input.shape);
150
- if (!isAgentBridgePrimitiveShape(shape)) {
151
- return createLocalEditorAgentBridgeFailure(EDITOR_AGENT_BRIDGE_CAPABILITY_ID.OBJECT_CREATE_PRIMITIVE, 'object.createPrimitive requires shape to be cube, sphere, plane, or capsule.', { code: 'object.create.invalidInput' });
152
- }
153
- if (state.mode !== 'editor' || !state.session) {
154
- return createLocalEditorAgentBridgeFailure(EDITOR_AGENT_BRIDGE_CAPABILITY_ID.OBJECT_CREATE_PRIMITIVE, 'Editor is not in edit mode.', { code: 'editor.notReady' });
155
- }
156
- if (!hasAgentBridgeSafeSceneScope(operations)) {
157
- return createLocalEditorAgentBridgeFailure(EDITOR_AGENT_BRIDGE_CAPABILITY_ID.OBJECT_CREATE_PRIMITIVE, 'Scene object creation is unavailable outside the Scene Hierarchy scope.', { code: 'object.sceneScopeRequired' });
158
- }
159
- const sessionState = state.session.getState({ cloneDocuments: false });
160
- const document = sessionState.workingDocument;
161
- const hierarchy = getAgentBridgeSafeSceneHierarchy(operations);
162
- const requestedParentId = input.parentId === null ? null : normalizeAgentBridgeString(input.parentId) || null;
163
- const requestedActiveId = input.activeId === null
164
- ? null
165
- : normalizeAgentBridgeString(input.activeId) || getAgentBridgeSafeSceneSelection(operations).activeId;
166
- const invalidTargetId = [requestedParentId, requestedActiveId]
167
- .find(id => id && !hierarchy.some(item => item.id === id));
168
- if (invalidTargetId) {
169
- return createLocalEditorAgentBridgeFailure(EDITOR_AGENT_BRIDGE_CAPABILITY_ID.OBJECT_CREATE_PRIMITIVE, `Create target is unavailable in the safe Hierarchy projection: ${invalidTargetId}`, { code: 'object.create.invalidTarget', objectId: invalidTargetId });
170
- }
171
- const intent = {
172
- shape,
173
- name: normalizeAgentBridgeString(input.name) || undefined,
174
- parentId: requestedParentId,
175
- activeId: requestedActiveId,
176
- };
177
- operations.cancelActiveOperation();
178
- const patch = options.documentAdapter.createSceneGraphCreatePrimitivePatch?.(document, intent);
179
- if (!patch) {
180
- return createLocalEditorAgentBridgeFailure(EDITOR_AGENT_BRIDGE_CAPABILITY_ID.OBJECT_CREATE_PRIMITIVE, `Primitive patch was not created for shape: ${shape}`, { code: 'object.create.patchUnavailable' });
181
- }
182
- const result = state.session.dispatch({
183
- type: 'document.patch',
184
- label: patch.label ?? `Create ${shape}`,
185
- patch: patch.patch,
186
- targetId: patch.createdId ?? undefined,
187
- ...operations.withProjectionImpact(operations.resolveProjectionImpact(patch, operations.createKnownCreatedReprojectProjectionImpact({
188
- createdNodeIds: [patch.createdId],
189
- reprojectIds: patch.reprojectIds,
190
- }))),
191
- });
192
- if (!result.documentChanged) {
193
- return createLocalEditorAgentBridgeFailure(EDITOR_AGENT_BRIDGE_CAPABILITY_ID.OBJECT_CREATE_PRIMITIVE, `Create ${shape} did not change the document.`, { code: 'object.create.unchanged' });
194
- }
195
- const createdId = patch.createdId ?? null;
196
- if (!createdId) {
197
- return createLocalEditorAgentBridgeFailure(EDITOR_AGENT_BRIDGE_CAPABILITY_ID.OBJECT_CREATE_PRIMITIVE, `Create ${shape} did not return a created id.`, { code: 'object.create.missingCreatedId' });
198
- }
199
- let selection = result.selection;
200
- const updatedHierarchy = getAgentBridgeSafeSceneHierarchy(operations);
201
- if (isAgentBridgeHierarchyObjectSelectable(options, result.workingDocument, createdId, updatedHierarchy)) {
202
- selection = state.session.dispatch({
203
- type: 'selection.replace',
204
- selectedIds: [createdId],
205
- activeId: createdId,
206
- label: 'Agent Select Created Primitive',
207
- }).selection;
208
- }
209
- else {
210
- selection = operations.sanitizeSelection(result.workingDocument, selection) ?? selection;
211
- }
212
- selection = reconcileAgentBridgeSafeSceneSelection(state, operations, selection);
213
- operations.rebuildProjectionFromDocument(result.workingDocument, selection);
214
- state.summary = operations.summarizeDocument(result.workingDocument, state.session.getSource());
215
- state.status = patch.label ?? `Agent created ${shape} ${createdId}`;
216
- renderUi();
217
- const object = createAgentBridgeSceneObject(state, options, result.workingDocument, createdId, getAgentBridgeSafeSceneHierarchy(operations));
218
- if (!object) {
219
- return createLocalEditorAgentBridgeFailure(EDITOR_AGENT_BRIDGE_CAPABILITY_ID.OBJECT_CREATE_PRIMITIVE, 'Created object is unavailable in the safe Scene Hierarchy projection.', { code: 'object.create.projectionIntegrity' });
220
- }
221
- return {
222
- createdId,
223
- object,
224
- selection: cloneAgentBridgeSelection(getAgentBridgeSafeSceneSelection(operations)),
225
- };
226
- }
227
- async function createAgentBridgeObjectFromAsset(state, options, input, renderUi, operations) {
228
- const assetId = normalizeAgentBridgeString(input.assetId);
229
- if (!assetId) {
230
- return createLocalEditorAgentBridgeFailure(EDITOR_AGENT_BRIDGE_CAPABILITY_ID.OBJECT_CREATE_FROM_ASSET, 'object.createFromAsset requires assetId.', { code: 'object.createFromAsset.invalidInput' });
231
- }
232
- if (state.mode !== 'editor' || !state.session) {
233
- return createLocalEditorAgentBridgeFailure(EDITOR_AGENT_BRIDGE_CAPABILITY_ID.OBJECT_CREATE_FROM_ASSET, 'Editor is not in edit mode.', { code: 'editor.notReady' });
234
- }
235
- if (!hasAgentBridgeSafeSceneScope(operations)) {
236
- return createLocalEditorAgentBridgeFailure(EDITOR_AGENT_BRIDGE_CAPABILITY_ID.OBJECT_CREATE_FROM_ASSET, 'Scene asset placement is unavailable outside the Scene Hierarchy scope. Use prefab.node.createFromAsset in Prefab Stage.', { code: 'object.sceneScopeRequired' });
237
- }
238
- const asset = findAgentBridgeVisibleAssetInfo(state, options, assetId);
239
- if (!asset) {
240
- return createLocalEditorAgentBridgeFailure(EDITOR_AGENT_BRIDGE_CAPABILITY_ID.OBJECT_CREATE_FROM_ASSET, `Asset not found: ${assetId}`, { code: 'asset.notFound' });
241
- }
242
- if (asset.placeable === false) {
243
- return createLocalEditorAgentBridgeFailure(EDITOR_AGENT_BRIDGE_CAPABILITY_ID.OBJECT_CREATE_FROM_ASSET, `Asset is not placeable: ${assetId}`, { code: 'asset.unplaceable' });
244
- }
245
- const placement = createAgentBridgeAssetPlacement(input);
246
- if (placement === false) {
247
- return createLocalEditorAgentBridgeFailure(EDITOR_AGENT_BRIDGE_CAPABILITY_ID.OBJECT_CREATE_FROM_ASSET, 'object.createFromAsset position, rotation, and scale must be finite vec3 values when supplied.', { code: 'object.createFromAsset.invalidTransform' });
248
- }
249
- const result = operations.createAssetFromAssetId(assetId, {
250
- name: normalizeAgentBridgeString(input.name) || undefined,
251
- placement,
252
- select: input.select !== false,
253
- });
254
- if (!result.ok) {
255
- return createLocalEditorAgentBridgeFailure(EDITOR_AGENT_BRIDGE_CAPABILITY_ID.OBJECT_CREATE_FROM_ASSET, result.status || `Create from asset failed: ${assetId}`, { code: result.error ?? 'object.createFromAsset.failed' });
256
- }
257
- const createdId = normalizeAgentBridgeString(result.createdId);
258
- if (!createdId) {
259
- return createLocalEditorAgentBridgeFailure(EDITOR_AGENT_BRIDGE_CAPABILITY_ID.OBJECT_CREATE_FROM_ASSET, `Create from asset did not return a created id: ${assetId}`, { code: 'object.createFromAsset.missingCreatedId' });
260
- }
261
- const hierarchyToken = captureAgentBridgeSceneHierarchyToken(operations);
262
- if (!hierarchyToken) {
263
- return createLocalEditorAgentBridgeFailure(EDITOR_AGENT_BRIDGE_CAPABILITY_ID.OBJECT_CREATE_FROM_ASSET, 'Asset placement completed without a current Scene Hierarchy scope.', { code: 'object.createFromAsset.hierarchyUnavailable' });
264
- }
265
- await waitForAgentBridgeProjectionIdle(state);
266
- if (!isAgentBridgeSceneHierarchyTokenCurrent(operations, hierarchyToken)) {
267
- return createLocalEditorAgentBridgeFailure(EDITOR_AGENT_BRIDGE_CAPABILITY_ID.OBJECT_CREATE_FROM_ASSET, 'Scene Hierarchy authority or revision changed while asset placement was pending.', {
268
- code: 'object.createFromAsset.staleHierarchy',
269
- details: {
270
- expectedAuthorityToken: hierarchyToken.authorityToken,
271
- expectedScopeKey: hierarchyToken.scopeKey,
272
- expectedRevision: hierarchyToken.revision,
273
- },
274
- });
275
- }
276
- const document = state.session.getState({ cloneDocuments: false }).workingDocument;
277
- const safeScene = getAgentBridgeSafeSceneReadModel(operations);
278
- const hierarchy = safeScene.hierarchy;
279
- const selection = safeScene.selection;
280
- const object = createAgentBridgeSceneObject(state, options, document, createdId, hierarchy);
281
- if (!object) {
282
- return createLocalEditorAgentBridgeFailure(EDITOR_AGENT_BRIDGE_CAPABILITY_ID.OBJECT_CREATE_FROM_ASSET, 'Placed asset object is unavailable in the safe Scene Hierarchy projection.', { code: 'object.createFromAsset.projectionIntegrity' });
283
- }
284
- let focused = false;
285
- if (input.focus === true && hierarchy.some(item => item.id === createdId)) {
286
- focused = operations.focusProjectionNode(createdId);
287
- if (focused)
288
- renderUi();
289
- }
290
- return {
291
- assetId,
292
- createdId,
293
- object,
294
- selection: cloneAgentBridgeSelection(selection),
295
- focused,
296
- status: result.status,
297
- };
298
- }
299
- async function waitForAgentBridgeProjectionIdle(state) {
300
- const waitForIdle = state.projection?.waitForIdle;
301
- if (!waitForIdle)
302
- return;
303
- await Promise.race([
304
- waitForIdle.call(state.projection),
305
- new Promise(resolve => setTimeout(resolve, OBJECT_CREATE_FROM_ASSET_PROJECTION_WAIT_MS)),
306
- ]);
307
- }
308
- function captureAgentBridgeSceneHierarchyToken(operations) {
309
- const model = operations.getHierarchyReadModel();
310
- return model.snapshot.scopeType === 'scene'
311
- ? {
312
- authorityToken: model.authorityToken,
313
- scopeKey: model.snapshot.scopeKey,
314
- revision: model.snapshot.revision,
315
- }
316
- : null;
317
- }
318
- function isAgentBridgeSceneHierarchyTokenCurrent(operations, expected) {
319
- const current = captureAgentBridgeSceneHierarchyToken(operations);
320
- return current?.authorityToken === expected.authorityToken
321
- && current.scopeKey === expected.scopeKey
322
- && current.revision === expected.revision;
323
- }
324
- function createAgentBridgeAssetPlacement(input) {
325
- const hasPosition = input.position !== undefined;
326
- const hasRotation = input.rotation !== undefined;
327
- const hasScale = input.scale !== undefined;
328
- if (!hasPosition && !hasRotation && !hasScale)
329
- return undefined;
330
- if ((hasPosition && !isLocalEditorAgentBridgeVec3(input.position))
331
- || (hasRotation && !isLocalEditorAgentBridgeVec3(input.rotation))
332
- || (hasScale && !isLocalEditorAgentBridgeVec3(input.scale))) {
333
- return false;
334
- }
335
- return {
336
- position: hasPosition && input.position ? cloneVec3(input.position) : { x: 0, y: 0, z: 0 },
337
- rotation: hasRotation && input.rotation ? cloneVec3(input.rotation) : { x: 0, y: 0, z: 0 },
338
- scale: hasScale && input.scale ? cloneVec3(input.scale) : { x: 1, y: 1, z: 1 },
339
- };
340
- }
341
- function deleteAgentBridgeObjects(state, options, input, renderUi, operations) {
342
- const normalized = normalizeAgentBridgeDeleteInput(input);
343
- if (!normalized.ok)
344
- return normalized.result;
345
- if (state.mode !== 'editor' || !state.session) {
346
- return createLocalEditorAgentBridgeFailure(EDITOR_AGENT_BRIDGE_CAPABILITY_ID.OBJECT_DELETE, 'Editor is not in edit mode.', { code: 'editor.notReady' });
347
- }
348
- if (!hasAgentBridgeSafeSceneScope(operations)) {
349
- return createLocalEditorAgentBridgeFailure(EDITOR_AGENT_BRIDGE_CAPABILITY_ID.OBJECT_DELETE, 'Scene object deletion is unavailable outside the Scene Hierarchy scope.', { code: 'object.sceneScopeRequired' });
350
- }
351
- const document = state.session.getState({ cloneDocuments: false }).workingDocument;
352
- const intent = {
353
- ids: normalized.ids,
354
- activeId: normalized.activeId,
355
- };
356
- operations.cancelActiveOperation();
357
- const hierarchy = getAgentBridgeSafeSceneHierarchy(operations);
358
- const invalidTargetId = [...intent.ids, intent.activeId]
359
- .find(id => id && !hierarchy.some(item => item.id === id));
360
- if (invalidTargetId) {
361
- return createLocalEditorAgentBridgeFailure(EDITOR_AGENT_BRIDGE_CAPABILITY_ID.OBJECT_DELETE, `Delete target is unavailable in the safe Hierarchy projection: ${invalidTargetId}`, { code: 'object.delete.invalidTarget', objectId: invalidTargetId });
362
- }
363
- const validation = validateSceneGraphDelete(hierarchy, intent);
364
- if (!validation.ok) {
365
- return createLocalEditorAgentBridgeFailure(EDITOR_AGENT_BRIDGE_CAPABILITY_ID.OBJECT_DELETE, `Delete rejected: ${validation.reason ?? 'invalid scene graph delete'}.`, { code: 'object.delete.rejected', objectId: normalized.ids[0] });
366
- }
367
- const patch = options.documentAdapter.createSceneGraphDeletePatch?.(document, intent);
368
- if (!patch) {
369
- return createLocalEditorAgentBridgeFailure(EDITOR_AGENT_BRIDGE_CAPABILITY_ID.OBJECT_DELETE, 'Delete patch was not created.', { code: 'object.delete.patchUnavailable', objectId: normalized.ids[0] });
370
- }
371
- const result = state.session.dispatch({
372
- type: 'document.patch',
373
- label: patch.label ?? `Delete ${intent.ids.length} node(s)`,
374
- patch: patch.patch,
375
- targetId: intent.activeId ?? undefined,
376
- ...operations.withProjectionImpact(operations.resolveProjectionImpact(patch, patch.deletedIds
377
- ? operations.createDeletedNodeProjectionImpact(patch.deletedIds)
378
- : undefined)),
379
- });
380
- if (!result.documentChanged) {
381
- return createLocalEditorAgentBridgeFailure(EDITOR_AGENT_BRIDGE_CAPABILITY_ID.OBJECT_DELETE, 'Delete did not change the document.', { code: 'object.delete.unchanged', objectId: normalized.ids[0] });
382
- }
383
- const deletedIds = (patch.deletedIds ?? normalized.ids)
384
- .filter(id => hierarchy.some(item => item.id === id));
385
- const rawFallbackSelectionId = patch.fallbackSelectionId ?? null;
386
- let selection = result.selection;
387
- const updatedHierarchy = getAgentBridgeSafeSceneHierarchy(operations);
388
- const fallbackSelectionId = rawFallbackSelectionId
389
- && updatedHierarchy.some(item => item.id === rawFallbackSelectionId)
390
- ? rawFallbackSelectionId
391
- : null;
392
- if (fallbackSelectionId && isAgentBridgeHierarchyObjectSelectable(options, result.workingDocument, fallbackSelectionId, updatedHierarchy)) {
393
- selection = state.session.dispatch({
394
- type: 'selection.replace',
395
- selectedIds: [fallbackSelectionId],
396
- activeId: fallbackSelectionId,
397
- label: 'Agent Select Delete Fallback',
398
- }).selection;
399
- }
400
- else {
401
- selection = operations.sanitizeSelection(result.workingDocument, selection) ?? selection;
402
- }
403
- selection = reconcileAgentBridgeSafeSceneSelection(state, operations, selection);
404
- operations.rebuildProjectionFromDocument(result.workingDocument, selection);
405
- state.summary = operations.summarizeDocument(result.workingDocument, state.session.getSource());
406
- state.status = patch.label ?? `Agent deleted ${deletedIds.length} node(s)`;
407
- renderUi();
408
- return {
409
- deletedIds,
410
- fallbackSelectionId,
411
- selection: cloneAgentBridgeSelection(getAgentBridgeSafeSceneSelection(operations)),
412
- };
413
- }
414
- function reconcileAgentBridgeSafeSceneSelection(state, operations, currentSelection) {
415
- const safeSelection = getAgentBridgeSafeSceneSelection(operations);
416
- if (safeSelection.activeId === currentSelection.activeId
417
- && safeSelection.selectedIds.length === currentSelection.selectedIds.length
418
- && safeSelection.selectedIds.every((id, index) => id === currentSelection.selectedIds[index])) {
419
- return safeSelection;
420
- }
421
- return state.session?.dispatch({
422
- type: 'selection.replace',
423
- selectedIds: safeSelection.selectedIds,
424
- activeId: safeSelection.activeId,
425
- label: 'Agent Reconcile Safe Hierarchy Selection',
426
- }).selection ?? safeSelection;
427
- }
428
- function agentBridgeObjectMatchesQuery(object, query) {
429
- return [
430
- object.id,
431
- object.name,
432
- object.label,
433
- object.type,
434
- object.path,
435
- ].some(value => typeof value === 'string' && value.toLowerCase().includes(query));
436
- }
437
- function createAgentBridgeHierarchyPath(objectId, hierarchyItems) {
438
- const byId = new Map(hierarchyItems.map(item => [item.id, item]));
439
- const path = [];
440
- const seen = new Set();
441
- let cursor = byId.get(objectId) ?? null;
442
- while (cursor && !seen.has(cursor.id)) {
443
- seen.add(cursor.id);
444
- path.unshift(cursor.label || cursor.id);
445
- cursor = cursor.parentId ? byId.get(cursor.parentId) ?? null : null;
446
- }
447
- return path.length > 0 ? path.join(' / ') : undefined;
448
- }
449
- function isAgentBridgePrimitiveShape(value) {
450
- return value === 'cube' || value === 'sphere' || value === 'plane' || value === 'capsule';
451
- }
452
- function normalizeAgentBridgeDeleteInput(input) {
453
- const objectId = normalizeAgentBridgeString(input.objectId);
454
- const hasObjectId = objectId.length > 0;
455
- const hasObjectIds = Array.isArray(input.objectIds);
456
- if (hasObjectId === hasObjectIds) {
457
- return {
458
- ok: false,
459
- result: createLocalEditorAgentBridgeFailure(EDITOR_AGENT_BRIDGE_CAPABILITY_ID.OBJECT_DELETE, 'object.delete requires exactly one of objectId or objectIds.', { code: 'object.delete.invalidInput', objectId: objectId || undefined }),
460
- };
461
- }
462
- const ids = hasObjectId
463
- ? [objectId]
464
- : normalizeAgentBridgeIdList(input.objectIds);
465
- if (ids.length === 0) {
466
- return {
467
- ok: false,
468
- result: createLocalEditorAgentBridgeFailure(EDITOR_AGENT_BRIDGE_CAPABILITY_ID.OBJECT_DELETE, 'object.delete requires at least one object id.', { code: 'object.delete.invalidInput' }),
469
- };
470
- }
471
- const requestedActiveId = normalizeAgentBridgeString(input.activeId);
472
- return {
473
- ok: true,
474
- ids,
475
- activeId: requestedActiveId && ids.includes(requestedActiveId)
476
- ? requestedActiveId
477
- : ids[ids.length - 1] ?? null,
478
- };
479
- }
480
- //# sourceMappingURL=scene-objects.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"scene-objects.js","sourceRoot":"","sources":["../../../src/agent-bridge/capabilities/scene-objects.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n type EditorTransformSnapshot,\n type EditorSelectionState,\n type SceneGraphCreatePrimitiveIntent,\n type SceneGraphDeleteIntent,\n validateSceneGraphDelete,\n} from '@fps-games/editor-core';\nimport {\n EDITOR_AGENT_BRIDGE_CAPABILITY_ID,\n type EditorAgentBridgeObjectCreateFromAssetInput,\n type EditorAgentBridgeObjectCreateFromAssetOutput,\n type EditorAgentBridgeObjectCreatePrimitiveOutput,\n type EditorAgentBridgeObjectDeleteOutput,\n type EditorAgentBridgeObjectResolveInput,\n type EditorAgentBridgeObjectResolveOutput,\n type EditorAgentBridgePrimitiveShape,\n type EditorAgentBridgeBounds,\n type EditorAgentBridgeSceneObject,\n type EditorAgentBridgeVec3,\n} from '@fps-games/editor-protocol';\nimport {\n cloneVec3,\n createLocalEditorAgentBridgeFailure,\n editorTransformSnapshotToAgentTransform,\n isLocalEditorAgentBridgeVec3,\n} from '../diagnostics.js';\nimport { findAgentBridgeVisibleAssetInfo } from './assets.js';\nimport type { LocalEditorAgentBridgeObjectSource } from '../source-types.js';\nimport {\n cloneAgentBridgeSelection,\n getAgentBridgeSafeSceneHierarchy,\n getAgentBridgeSafeSceneReadModel,\n getAgentBridgeSafeSceneSelection,\n hasAgentBridgeSafeSceneScope,\n isAgentBridgeDocumentNodeLocked,\n isAgentBridgeDocumentNodeSelectable,\n isAgentBridgeHierarchyObjectSelectable,\n normalizeAgentBridgeIdList,\n normalizeAgentBridgeString,\n type LocalEditorAgentBridgeHierarchyItem,\n type LocalEditorAgentBridgeCapabilitySourceOperations,\n type LocalEditorAgentBridgeHarnessState,\n} from '../shared.js';\nimport type { LocalEditorHarnessOptions } from '../../local-editor-harness.js';\n\nconst OBJECT_CREATE_FROM_ASSET_PROJECTION_WAIT_MS = 3000;\n\nexport function createLocalEditorAgentBridgeObjectSource<TDocument, TPatch, TAsset>(\n state: LocalEditorAgentBridgeHarnessState<TDocument, TPatch>,\n options: LocalEditorHarnessOptions<TDocument, TPatch, TAsset>,\n renderUi: () => void,\n operations: LocalEditorAgentBridgeCapabilitySourceOperations<TDocument>,\n): LocalEditorAgentBridgeObjectSource {\n return {\n listObjects(input) {\n const document = state.session?.getState({ cloneDocuments: false }).workingDocument ?? null;\n if (state.mode !== 'editor' || !document) return [];\n return listAgentBridgeSceneObjects(state, options, document, input.includeUnselectable === true, operations);\n },\n resolveObject(input) {\n return resolveAgentBridgeObject(state, options, input, operations);\n },\n getObject(objectId) {\n const document = state.session?.getState({ cloneDocuments: false }).workingDocument ?? null;\n if (state.mode !== 'editor' || !document) return null;\n return createAgentBridgeSceneObject(\n state,\n options,\n document,\n objectId,\n getAgentBridgeSafeSceneHierarchy(operations),\n );\n },\n createPrimitive(input) {\n return createAgentBridgePrimitiveObject(state, options, input, renderUi, operations);\n },\n createFromAsset(input) {\n return createAgentBridgeObjectFromAsset(state, options, input, renderUi, operations);\n },\n deleteObjects(input) {\n return deleteAgentBridgeObjects(state, options, input, renderUi, operations);\n },\n };\n}\n\nexport function listAgentBridgeSceneObjects<TDocument, TPatch, TAsset>(\n state: LocalEditorAgentBridgeHarnessState<TDocument, TPatch>,\n options: LocalEditorHarnessOptions<TDocument, TPatch, TAsset>,\n document: TDocument,\n includeUnselectable: boolean,\n operations: Pick<LocalEditorAgentBridgeCapabilitySourceOperations<TDocument>, 'getHierarchyReadModel'>,\n): EditorAgentBridgeSceneObject[] {\n const hierarchy = getAgentBridgeSafeSceneHierarchy(operations);\n return hierarchy\n .map(item => createAgentBridgeSceneObject(state, options, document, item.id, hierarchy))\n .filter((object): object is EditorAgentBridgeSceneObject => !!object)\n .filter(object => includeUnselectable || object.selectable !== false);\n}\n\nexport function createAgentBridgeSceneObject<TDocument, TPatch, TAsset>(\n state: LocalEditorAgentBridgeHarnessState<TDocument, TPatch>,\n options: LocalEditorHarnessOptions<TDocument, TPatch, TAsset>,\n document: TDocument,\n objectId: string,\n hierarchyItems: readonly LocalEditorAgentBridgeHierarchyItem[],\n): EditorAgentBridgeSceneObject | null {\n const item = hierarchyItems.find(candidate => candidate.id === objectId) ?? null;\n if (!item) return null;\n const projectionNode = options.documentAdapter.getProjectionNode(document, objectId);\n const runtimeTransform = state.projection?.readNodeTransform(objectId) ?? null;\n const documentTransform = projectionNode?.transform ?? null;\n const transform = editorTransformSnapshotToAgentTransform(runtimeTransform ?? documentTransform);\n const bounds = createAgentBridgeSceneObjectBounds(state.projection?.getSelectionBounds([objectId]) ?? null, transform?.position);\n const locked = isAgentBridgeDocumentNodeLocked(options, document, objectId);\n const selectable = isAgentBridgeDocumentNodeSelectable(options, document, objectId);\n return {\n id: objectId,\n name: projectionNode?.name,\n label: item?.label ?? projectionNode?.name ?? objectId,\n type: projectionNode?.runtimeKind ?? projectionNode?.helperKind ?? item?.role,\n path: createAgentBridgeHierarchyPath(objectId, hierarchyItems),\n parentId: item?.parentId ?? projectionNode?.parentId ?? null,\n selectable,\n locked,\n ...(transform ? { transform } : {}),\n ...(bounds ? { bounds } : {}),\n };\n}\n\nfunction createAgentBridgeSceneObjectBounds(\n bounds: unknown,\n fallbackCenter?: EditorAgentBridgeVec3,\n): EditorAgentBridgeBounds | null {\n const record = bounds && typeof bounds === 'object' && !Array.isArray(bounds)\n ? bounds as Record<string, unknown>\n : null;\n const min = record ? readAgentBridgeFiniteVec3(record.min) : null;\n const max = record ? readAgentBridgeFiniteVec3(record.max) : null;\n const size = record ? readAgentBridgeFiniteVec3(record.size) : null;\n const center = record ? readAgentBridgeFiniteVec3(record.center) : null;\n const hasInvertedMinMax = !!min && !!max && (\n min.x > max.x\n || min.y > max.y\n || min.z > max.z\n );\n if (!hasInvertedMinMax && (min || max || size || center)) {\n return {\n ...(min ? { min } : {}),\n ...(max ? { max } : {}),\n ...(size ? { size } : {}),\n ...(center ? { center } : {}),\n };\n }\n if (!fallbackCenter || !isAgentBridgeFiniteVec3(fallbackCenter)) return null;\n const safeCenter = cloneVec3(fallbackCenter);\n return {\n min: cloneVec3(safeCenter),\n max: cloneVec3(safeCenter),\n center: cloneVec3(safeCenter),\n size: { x: 0, y: 0, z: 0 },\n };\n}\n\nfunction readAgentBridgeFiniteVec3(value: unknown): EditorAgentBridgeVec3 | null {\n if (!value || typeof value !== 'object' || Array.isArray(value)) return null;\n const record = value as Record<string, unknown>;\n const vec3 = {\n x: record.x,\n y: record.y,\n z: record.z,\n };\n return isAgentBridgeFiniteVec3(vec3) ? {\n x: vec3.x,\n y: vec3.y,\n z: vec3.z,\n } : null;\n}\n\nfunction isAgentBridgeFiniteVec3(value: unknown): value is EditorAgentBridgeVec3 {\n if (!value || typeof value !== 'object' || Array.isArray(value)) return false;\n const record = value as Record<string, unknown>;\n return Number.isFinite(record.x)\n && Number.isFinite(record.y)\n && Number.isFinite(record.z);\n}\n\nfunction resolveAgentBridgeObject<TDocument, TPatch, TAsset>(\n state: LocalEditorAgentBridgeHarnessState<TDocument, TPatch>,\n options: LocalEditorHarnessOptions<TDocument, TPatch, TAsset>,\n input: EditorAgentBridgeObjectResolveInput,\n operations: Pick<LocalEditorAgentBridgeCapabilitySourceOperations<TDocument>, 'getHierarchyReadModel'>,\n): EditorAgentBridgeObjectResolveOutput {\n const document = state.session?.getState({ cloneDocuments: false }).workingDocument ?? null;\n if (state.mode !== 'editor' || !document) {\n return { objects: [], resolvedObject: null, ambiguous: false };\n }\n const objects = listAgentBridgeSceneObjects(\n state,\n options,\n document,\n input.includeUnselectable === true,\n operations,\n );\n const objectId = normalizeAgentBridgeString(input.objectId);\n const name = normalizeAgentBridgeString(input.name);\n const path = normalizeAgentBridgeString(input.path);\n const type = normalizeAgentBridgeString(input.type);\n const query = normalizeAgentBridgeString(input.query).toLowerCase();\n const matches = objects.filter(object => {\n if (objectId && object.id !== objectId) return false;\n if (name && object.name !== name && object.label !== name) return false;\n if (path && object.path !== path) return false;\n if (type && object.type !== type) return false;\n if (query && !agentBridgeObjectMatchesQuery(object, query)) return false;\n return true;\n });\n return {\n objects: matches,\n resolvedObject: matches.length === 1 ? matches[0] : null,\n ambiguous: matches.length > 1,\n };\n}\n\nfunction createAgentBridgePrimitiveObject<TDocument, TPatch, TAsset>(\n state: LocalEditorAgentBridgeHarnessState<TDocument, TPatch>,\n options: LocalEditorHarnessOptions<TDocument, TPatch, TAsset>,\n input: { shape?: unknown; name?: unknown; parentId?: unknown; activeId?: unknown },\n renderUi: () => void,\n operations: LocalEditorAgentBridgeCapabilitySourceOperations<TDocument>,\n): EditorAgentBridgeObjectCreatePrimitiveOutput | ReturnType<typeof createLocalEditorAgentBridgeFailure> {\n const shape = normalizeAgentBridgeString(input.shape);\n if (!isAgentBridgePrimitiveShape(shape)) {\n return createLocalEditorAgentBridgeFailure(\n EDITOR_AGENT_BRIDGE_CAPABILITY_ID.OBJECT_CREATE_PRIMITIVE,\n 'object.createPrimitive requires shape to be cube, sphere, plane, or capsule.',\n { code: 'object.create.invalidInput' },\n );\n }\n if (state.mode !== 'editor' || !state.session) {\n return createLocalEditorAgentBridgeFailure(\n EDITOR_AGENT_BRIDGE_CAPABILITY_ID.OBJECT_CREATE_PRIMITIVE,\n 'Editor is not in edit mode.',\n { code: 'editor.notReady' },\n );\n }\n if (!hasAgentBridgeSafeSceneScope(operations)) {\n return createLocalEditorAgentBridgeFailure(\n EDITOR_AGENT_BRIDGE_CAPABILITY_ID.OBJECT_CREATE_PRIMITIVE,\n 'Scene object creation is unavailable outside the Scene Hierarchy scope.',\n { code: 'object.sceneScopeRequired' },\n );\n }\n const sessionState = state.session.getState({ cloneDocuments: false });\n const document = sessionState.workingDocument;\n const hierarchy = getAgentBridgeSafeSceneHierarchy(operations);\n const requestedParentId = input.parentId === null ? null : normalizeAgentBridgeString(input.parentId) || null;\n const requestedActiveId = input.activeId === null\n ? null\n : normalizeAgentBridgeString(input.activeId) || getAgentBridgeSafeSceneSelection(operations).activeId;\n const invalidTargetId = [requestedParentId, requestedActiveId]\n .find(id => id && !hierarchy.some(item => item.id === id));\n if (invalidTargetId) {\n return createLocalEditorAgentBridgeFailure(\n EDITOR_AGENT_BRIDGE_CAPABILITY_ID.OBJECT_CREATE_PRIMITIVE,\n `Create target is unavailable in the safe Hierarchy projection: ${invalidTargetId}`,\n { code: 'object.create.invalidTarget', objectId: invalidTargetId },\n );\n }\n const intent: SceneGraphCreatePrimitiveIntent = {\n shape,\n name: normalizeAgentBridgeString(input.name) || undefined,\n parentId: requestedParentId,\n activeId: requestedActiveId,\n };\n operations.cancelActiveOperation();\n const patch = options.documentAdapter.createSceneGraphCreatePrimitivePatch?.(document, intent);\n if (!patch) {\n return createLocalEditorAgentBridgeFailure(\n EDITOR_AGENT_BRIDGE_CAPABILITY_ID.OBJECT_CREATE_PRIMITIVE,\n `Primitive patch was not created for shape: ${shape}`,\n { code: 'object.create.patchUnavailable' },\n );\n }\n const result = state.session.dispatch({\n type: 'document.patch',\n label: patch.label ?? `Create ${shape}`,\n patch: patch.patch,\n targetId: patch.createdId ?? undefined,\n ...operations.withProjectionImpact(operations.resolveProjectionImpact(\n patch,\n operations.createKnownCreatedReprojectProjectionImpact({\n createdNodeIds: [patch.createdId],\n reprojectIds: patch.reprojectIds,\n }),\n )),\n });\n if (!result.documentChanged) {\n return createLocalEditorAgentBridgeFailure(\n EDITOR_AGENT_BRIDGE_CAPABILITY_ID.OBJECT_CREATE_PRIMITIVE,\n `Create ${shape} did not change the document.`,\n { code: 'object.create.unchanged' },\n );\n }\n const createdId = patch.createdId ?? null;\n if (!createdId) {\n return createLocalEditorAgentBridgeFailure(\n EDITOR_AGENT_BRIDGE_CAPABILITY_ID.OBJECT_CREATE_PRIMITIVE,\n `Create ${shape} did not return a created id.`,\n { code: 'object.create.missingCreatedId' },\n );\n }\n let selection: EditorSelectionState = result.selection;\n const updatedHierarchy = getAgentBridgeSafeSceneHierarchy(operations);\n if (isAgentBridgeHierarchyObjectSelectable(options, result.workingDocument, createdId, updatedHierarchy)) {\n selection = state.session.dispatch({\n type: 'selection.replace',\n selectedIds: [createdId],\n activeId: createdId,\n label: 'Agent Select Created Primitive',\n }).selection;\n } else {\n selection = operations.sanitizeSelection(result.workingDocument, selection) ?? selection;\n }\n selection = reconcileAgentBridgeSafeSceneSelection(state, operations, selection);\n operations.rebuildProjectionFromDocument(result.workingDocument, selection);\n state.summary = operations.summarizeDocument(result.workingDocument, state.session.getSource());\n state.status = patch.label ?? `Agent created ${shape} ${createdId}`;\n renderUi();\n const object = createAgentBridgeSceneObject(\n state,\n options,\n result.workingDocument,\n createdId,\n getAgentBridgeSafeSceneHierarchy(operations),\n );\n if (!object) {\n return createLocalEditorAgentBridgeFailure(\n EDITOR_AGENT_BRIDGE_CAPABILITY_ID.OBJECT_CREATE_PRIMITIVE,\n 'Created object is unavailable in the safe Scene Hierarchy projection.',\n { code: 'object.create.projectionIntegrity' },\n );\n }\n return {\n createdId,\n object,\n selection: cloneAgentBridgeSelection(getAgentBridgeSafeSceneSelection(operations)),\n };\n}\n\nasync function createAgentBridgeObjectFromAsset<TDocument, TPatch, TAsset>(\n state: LocalEditorAgentBridgeHarnessState<TDocument, TPatch>,\n options: LocalEditorHarnessOptions<TDocument, TPatch, TAsset>,\n input: EditorAgentBridgeObjectCreateFromAssetInput,\n renderUi: () => void,\n operations: LocalEditorAgentBridgeCapabilitySourceOperations<TDocument>,\n): Promise<EditorAgentBridgeObjectCreateFromAssetOutput | ReturnType<typeof createLocalEditorAgentBridgeFailure>> {\n const assetId = normalizeAgentBridgeString(input.assetId);\n if (!assetId) {\n return createLocalEditorAgentBridgeFailure(\n EDITOR_AGENT_BRIDGE_CAPABILITY_ID.OBJECT_CREATE_FROM_ASSET,\n 'object.createFromAsset requires assetId.',\n { code: 'object.createFromAsset.invalidInput' },\n );\n }\n if (state.mode !== 'editor' || !state.session) {\n return createLocalEditorAgentBridgeFailure(\n EDITOR_AGENT_BRIDGE_CAPABILITY_ID.OBJECT_CREATE_FROM_ASSET,\n 'Editor is not in edit mode.',\n { code: 'editor.notReady' },\n );\n }\n if (!hasAgentBridgeSafeSceneScope(operations)) {\n return createLocalEditorAgentBridgeFailure(\n EDITOR_AGENT_BRIDGE_CAPABILITY_ID.OBJECT_CREATE_FROM_ASSET,\n 'Scene asset placement is unavailable outside the Scene Hierarchy scope. Use prefab.node.createFromAsset in Prefab Stage.',\n { code: 'object.sceneScopeRequired' },\n );\n }\n const asset = findAgentBridgeVisibleAssetInfo(state, options, assetId);\n if (!asset) {\n return createLocalEditorAgentBridgeFailure(\n EDITOR_AGENT_BRIDGE_CAPABILITY_ID.OBJECT_CREATE_FROM_ASSET,\n `Asset not found: ${assetId}`,\n { code: 'asset.notFound' },\n );\n }\n if (asset.placeable === false) {\n return createLocalEditorAgentBridgeFailure(\n EDITOR_AGENT_BRIDGE_CAPABILITY_ID.OBJECT_CREATE_FROM_ASSET,\n `Asset is not placeable: ${assetId}`,\n { code: 'asset.unplaceable' },\n );\n }\n const placement = createAgentBridgeAssetPlacement(input);\n if (placement === false) {\n return createLocalEditorAgentBridgeFailure(\n EDITOR_AGENT_BRIDGE_CAPABILITY_ID.OBJECT_CREATE_FROM_ASSET,\n 'object.createFromAsset position, rotation, and scale must be finite vec3 values when supplied.',\n { code: 'object.createFromAsset.invalidTransform' },\n );\n }\n const result = operations.createAssetFromAssetId(assetId, {\n name: normalizeAgentBridgeString(input.name) || undefined,\n placement,\n select: input.select !== false,\n });\n if (!result.ok) {\n return createLocalEditorAgentBridgeFailure(\n EDITOR_AGENT_BRIDGE_CAPABILITY_ID.OBJECT_CREATE_FROM_ASSET,\n result.status || `Create from asset failed: ${assetId}`,\n { code: result.error ?? 'object.createFromAsset.failed' },\n );\n }\n const createdId = normalizeAgentBridgeString(result.createdId);\n if (!createdId) {\n return createLocalEditorAgentBridgeFailure(\n EDITOR_AGENT_BRIDGE_CAPABILITY_ID.OBJECT_CREATE_FROM_ASSET,\n `Create from asset did not return a created id: ${assetId}`,\n { code: 'object.createFromAsset.missingCreatedId' },\n );\n }\n const hierarchyToken = captureAgentBridgeSceneHierarchyToken(operations);\n if (!hierarchyToken) {\n return createLocalEditorAgentBridgeFailure(\n EDITOR_AGENT_BRIDGE_CAPABILITY_ID.OBJECT_CREATE_FROM_ASSET,\n 'Asset placement completed without a current Scene Hierarchy scope.',\n { code: 'object.createFromAsset.hierarchyUnavailable' },\n );\n }\n await waitForAgentBridgeProjectionIdle(state);\n if (!isAgentBridgeSceneHierarchyTokenCurrent(operations, hierarchyToken)) {\n return createLocalEditorAgentBridgeFailure(\n EDITOR_AGENT_BRIDGE_CAPABILITY_ID.OBJECT_CREATE_FROM_ASSET,\n 'Scene Hierarchy authority or revision changed while asset placement was pending.',\n {\n code: 'object.createFromAsset.staleHierarchy',\n details: {\n expectedAuthorityToken: hierarchyToken.authorityToken,\n expectedScopeKey: hierarchyToken.scopeKey,\n expectedRevision: hierarchyToken.revision,\n },\n },\n );\n }\n const document = state.session.getState({ cloneDocuments: false }).workingDocument;\n const safeScene = getAgentBridgeSafeSceneReadModel(operations);\n const hierarchy = safeScene.hierarchy;\n const selection = safeScene.selection;\n const object = createAgentBridgeSceneObject(state, options, document, createdId, hierarchy);\n if (!object) {\n return createLocalEditorAgentBridgeFailure(\n EDITOR_AGENT_BRIDGE_CAPABILITY_ID.OBJECT_CREATE_FROM_ASSET,\n 'Placed asset object is unavailable in the safe Scene Hierarchy projection.',\n { code: 'object.createFromAsset.projectionIntegrity' },\n );\n }\n let focused = false;\n if (input.focus === true && hierarchy.some(item => item.id === createdId)) {\n focused = operations.focusProjectionNode(createdId);\n if (focused) renderUi();\n }\n return {\n assetId,\n createdId,\n object,\n selection: cloneAgentBridgeSelection(selection),\n focused,\n status: result.status,\n };\n}\n\nasync function waitForAgentBridgeProjectionIdle<TDocument, TPatch>(\n state: LocalEditorAgentBridgeHarnessState<TDocument, TPatch>,\n): Promise<void> {\n const waitForIdle = state.projection?.waitForIdle;\n if (!waitForIdle) return;\n await Promise.race([\n waitForIdle.call(state.projection),\n new Promise(resolve => setTimeout(resolve, OBJECT_CREATE_FROM_ASSET_PROJECTION_WAIT_MS)),\n ]);\n}\n\ninterface AgentBridgeSceneHierarchyToken {\n authorityToken: number;\n scopeKey: string;\n revision: number;\n}\n\nfunction captureAgentBridgeSceneHierarchyToken<TDocument>(\n operations: Pick<LocalEditorAgentBridgeCapabilitySourceOperations<TDocument>, 'getHierarchyReadModel'>,\n): AgentBridgeSceneHierarchyToken | null {\n const model = operations.getHierarchyReadModel();\n return model.snapshot.scopeType === 'scene'\n ? {\n authorityToken: model.authorityToken,\n scopeKey: model.snapshot.scopeKey,\n revision: model.snapshot.revision,\n }\n : null;\n}\n\nfunction isAgentBridgeSceneHierarchyTokenCurrent<TDocument>(\n operations: Pick<LocalEditorAgentBridgeCapabilitySourceOperations<TDocument>, 'getHierarchyReadModel'>,\n expected: AgentBridgeSceneHierarchyToken,\n): boolean {\n const current = captureAgentBridgeSceneHierarchyToken(operations);\n return current?.authorityToken === expected.authorityToken\n && current.scopeKey === expected.scopeKey\n && current.revision === expected.revision;\n}\n\nfunction createAgentBridgeAssetPlacement(input: EditorAgentBridgeObjectCreateFromAssetInput): EditorTransformSnapshot | undefined | false {\n const hasPosition = input.position !== undefined;\n const hasRotation = input.rotation !== undefined;\n const hasScale = input.scale !== undefined;\n if (!hasPosition && !hasRotation && !hasScale) return undefined;\n if (\n (hasPosition && !isLocalEditorAgentBridgeVec3(input.position))\n || (hasRotation && !isLocalEditorAgentBridgeVec3(input.rotation))\n || (hasScale && !isLocalEditorAgentBridgeVec3(input.scale))\n ) {\n return false;\n }\n return {\n position: hasPosition && input.position ? cloneVec3(input.position) : { x: 0, y: 0, z: 0 },\n rotation: hasRotation && input.rotation ? cloneVec3(input.rotation) : { x: 0, y: 0, z: 0 },\n scale: hasScale && input.scale ? cloneVec3(input.scale) : { x: 1, y: 1, z: 1 },\n };\n}\n\nfunction deleteAgentBridgeObjects<TDocument, TPatch, TAsset>(\n state: LocalEditorAgentBridgeHarnessState<TDocument, TPatch>,\n options: LocalEditorHarnessOptions<TDocument, TPatch, TAsset>,\n input: { objectId?: unknown; objectIds?: unknown; activeId?: unknown },\n renderUi: () => void,\n operations: LocalEditorAgentBridgeCapabilitySourceOperations<TDocument>,\n): EditorAgentBridgeObjectDeleteOutput | ReturnType<typeof createLocalEditorAgentBridgeFailure> {\n const normalized = normalizeAgentBridgeDeleteInput(input);\n if (!normalized.ok) return normalized.result;\n if (state.mode !== 'editor' || !state.session) {\n return createLocalEditorAgentBridgeFailure(\n EDITOR_AGENT_BRIDGE_CAPABILITY_ID.OBJECT_DELETE,\n 'Editor is not in edit mode.',\n { code: 'editor.notReady' },\n );\n }\n if (!hasAgentBridgeSafeSceneScope(operations)) {\n return createLocalEditorAgentBridgeFailure(\n EDITOR_AGENT_BRIDGE_CAPABILITY_ID.OBJECT_DELETE,\n 'Scene object deletion is unavailable outside the Scene Hierarchy scope.',\n { code: 'object.sceneScopeRequired' },\n );\n }\n const document = state.session.getState({ cloneDocuments: false }).workingDocument;\n const intent: SceneGraphDeleteIntent = {\n ids: normalized.ids,\n activeId: normalized.activeId,\n };\n operations.cancelActiveOperation();\n const hierarchy = getAgentBridgeSafeSceneHierarchy(operations);\n const invalidTargetId = [...intent.ids, intent.activeId]\n .find(id => id && !hierarchy.some(item => item.id === id));\n if (invalidTargetId) {\n return createLocalEditorAgentBridgeFailure(\n EDITOR_AGENT_BRIDGE_CAPABILITY_ID.OBJECT_DELETE,\n `Delete target is unavailable in the safe Hierarchy projection: ${invalidTargetId}`,\n { code: 'object.delete.invalidTarget', objectId: invalidTargetId },\n );\n }\n const validation = validateSceneGraphDelete(hierarchy, intent);\n if (!validation.ok) {\n return createLocalEditorAgentBridgeFailure(\n EDITOR_AGENT_BRIDGE_CAPABILITY_ID.OBJECT_DELETE,\n `Delete rejected: ${validation.reason ?? 'invalid scene graph delete'}.`,\n { code: 'object.delete.rejected', objectId: normalized.ids[0] },\n );\n }\n const patch = options.documentAdapter.createSceneGraphDeletePatch?.(document, intent);\n if (!patch) {\n return createLocalEditorAgentBridgeFailure(\n EDITOR_AGENT_BRIDGE_CAPABILITY_ID.OBJECT_DELETE,\n 'Delete patch was not created.',\n { code: 'object.delete.patchUnavailable', objectId: normalized.ids[0] },\n );\n }\n const result = state.session.dispatch({\n type: 'document.patch',\n label: patch.label ?? `Delete ${intent.ids.length} node(s)`,\n patch: patch.patch,\n targetId: intent.activeId ?? undefined,\n ...operations.withProjectionImpact(operations.resolveProjectionImpact(\n patch,\n patch.deletedIds\n ? operations.createDeletedNodeProjectionImpact(patch.deletedIds)\n : undefined,\n )),\n });\n if (!result.documentChanged) {\n return createLocalEditorAgentBridgeFailure(\n EDITOR_AGENT_BRIDGE_CAPABILITY_ID.OBJECT_DELETE,\n 'Delete did not change the document.',\n { code: 'object.delete.unchanged', objectId: normalized.ids[0] },\n );\n }\n const deletedIds = (patch.deletedIds ?? normalized.ids)\n .filter(id => hierarchy.some(item => item.id === id));\n const rawFallbackSelectionId = patch.fallbackSelectionId ?? null;\n let selection: EditorSelectionState = result.selection;\n const updatedHierarchy = getAgentBridgeSafeSceneHierarchy(operations);\n const fallbackSelectionId = rawFallbackSelectionId\n && updatedHierarchy.some(item => item.id === rawFallbackSelectionId)\n ? rawFallbackSelectionId\n : null;\n if (fallbackSelectionId && isAgentBridgeHierarchyObjectSelectable(options, result.workingDocument, fallbackSelectionId, updatedHierarchy)) {\n selection = state.session.dispatch({\n type: 'selection.replace',\n selectedIds: [fallbackSelectionId],\n activeId: fallbackSelectionId,\n label: 'Agent Select Delete Fallback',\n }).selection;\n } else {\n selection = operations.sanitizeSelection(result.workingDocument, selection) ?? selection;\n }\n selection = reconcileAgentBridgeSafeSceneSelection(state, operations, selection);\n operations.rebuildProjectionFromDocument(result.workingDocument, selection);\n state.summary = operations.summarizeDocument(result.workingDocument, state.session.getSource());\n state.status = patch.label ?? `Agent deleted ${deletedIds.length} node(s)`;\n renderUi();\n return {\n deletedIds,\n fallbackSelectionId,\n selection: cloneAgentBridgeSelection(getAgentBridgeSafeSceneSelection(operations)),\n };\n}\n\nfunction reconcileAgentBridgeSafeSceneSelection<TDocument, TPatch>(\n state: LocalEditorAgentBridgeHarnessState<TDocument, TPatch>,\n operations: Pick<LocalEditorAgentBridgeCapabilitySourceOperations<TDocument>, 'getHierarchyReadModel'>,\n currentSelection: EditorSelectionState,\n): EditorSelectionState {\n const safeSelection = getAgentBridgeSafeSceneSelection(operations);\n if (safeSelection.activeId === currentSelection.activeId\n && safeSelection.selectedIds.length === currentSelection.selectedIds.length\n && safeSelection.selectedIds.every((id, index) => id === currentSelection.selectedIds[index])) {\n return safeSelection;\n }\n return state.session?.dispatch({\n type: 'selection.replace',\n selectedIds: safeSelection.selectedIds,\n activeId: safeSelection.activeId,\n label: 'Agent Reconcile Safe Hierarchy Selection',\n }).selection ?? safeSelection;\n}\n\nfunction agentBridgeObjectMatchesQuery(object: EditorAgentBridgeSceneObject, query: string): boolean {\n return [\n object.id,\n object.name,\n object.label,\n object.type,\n object.path,\n ].some(value => typeof value === 'string' && value.toLowerCase().includes(query));\n}\n\nfunction createAgentBridgeHierarchyPath(\n objectId: string,\n hierarchyItems: readonly LocalEditorAgentBridgeHierarchyItem[],\n): string | undefined {\n const byId = new Map(hierarchyItems.map(item => [item.id, item]));\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 isAgentBridgePrimitiveShape(value: string): value is EditorAgentBridgePrimitiveShape {\n return value === 'cube' || value === 'sphere' || value === 'plane' || value === 'capsule';\n}\n\nfunction normalizeAgentBridgeDeleteInput(\n input: { objectId?: unknown; objectIds?: unknown; activeId?: unknown },\n): { ok: true; ids: string[]; activeId: string | null } | { ok: false; result: ReturnType<typeof createLocalEditorAgentBridgeFailure> } {\n const objectId = normalizeAgentBridgeString(input.objectId);\n const hasObjectId = objectId.length > 0;\n const hasObjectIds = Array.isArray(input.objectIds);\n if (hasObjectId === hasObjectIds) {\n return {\n ok: false,\n result: createLocalEditorAgentBridgeFailure(\n EDITOR_AGENT_BRIDGE_CAPABILITY_ID.OBJECT_DELETE,\n 'object.delete requires exactly one of objectId or objectIds.',\n { code: 'object.delete.invalidInput', objectId: objectId || undefined },\n ),\n };\n }\n const ids = hasObjectId\n ? [objectId]\n : normalizeAgentBridgeIdList(input.objectIds as unknown[]);\n if (ids.length === 0) {\n return {\n ok: false,\n result: createLocalEditorAgentBridgeFailure(\n EDITOR_AGENT_BRIDGE_CAPABILITY_ID.OBJECT_DELETE,\n 'object.delete requires at least one object id.',\n { code: 'object.delete.invalidInput' },\n ),\n };\n }\n const requestedActiveId = normalizeAgentBridgeString(input.activeId);\n return {\n ok: true,\n ids,\n activeId: requestedActiveId && ids.includes(requestedActiveId)\n ? requestedActiveId\n : ids[ids.length - 1] ?? null,\n };\n}\n"]}
@@ -1,5 +0,0 @@
1
- import type { LocalEditorAgentBridgeSelectionSource } from '../source-types.js';
2
- import { type LocalEditorAgentBridgeCapabilitySourceOperations, type LocalEditorAgentBridgeHarnessState } from '../shared.js';
3
- import type { LocalEditorHarnessOptions } from '../../local-editor-harness.js';
4
- export declare function createLocalEditorAgentBridgeSelectionSource<TDocument, TPatch, TAsset>(state: LocalEditorAgentBridgeHarnessState<TDocument, TPatch>, options: LocalEditorHarnessOptions<TDocument, TPatch, TAsset>, operations: LocalEditorAgentBridgeCapabilitySourceOperations<TDocument>): LocalEditorAgentBridgeSelectionSource;
5
- //# sourceMappingURL=selection.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"selection.d.ts","sourceRoot":"","sources":["../../../src/agent-bridge/capabilities/selection.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,qCAAqC,EAAE,MAAM,oBAAoB,CAAC;AAChF,OAAO,EAML,KAAK,gDAAgD,EACrD,KAAK,kCAAkC,EACxC,MAAM,cAAc,CAAC;AACtB,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,+BAA+B,CAAC;AAE/E,wBAAgB,2CAA2C,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EACnF,KAAK,EAAE,kCAAkC,CAAC,SAAS,EAAE,MAAM,CAAC,EAC5D,OAAO,EAAE,yBAAyB,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,CAAC,EAC7D,UAAU,EAAE,gDAAgD,CAAC,SAAS,CAAC,GACtE,qCAAqC,CAoDvC"}