@fps-games/editor 0.1.5-beta.5 → 0.1.7-beta.1

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 (469) hide show
  1. package/dist/agent-bridge/capabilities/assets.d.ts +8 -0
  2. package/dist/agent-bridge/capabilities/assets.d.ts.map +1 -0
  3. package/dist/agent-bridge/capabilities/assets.js +226 -0
  4. package/dist/agent-bridge/capabilities/assets.js.map +1 -0
  5. package/dist/agent-bridge/capabilities/editor-state.d.ts +5 -0
  6. package/dist/agent-bridge/capabilities/editor-state.d.ts.map +1 -0
  7. package/dist/agent-bridge/capabilities/editor-state.js +72 -0
  8. package/dist/agent-bridge/capabilities/editor-state.js.map +1 -0
  9. package/dist/agent-bridge/capabilities/host-lifecycle.d.ts +4 -0
  10. package/dist/agent-bridge/capabilities/host-lifecycle.d.ts.map +1 -0
  11. package/dist/agent-bridge/capabilities/host-lifecycle.js +87 -0
  12. package/dist/agent-bridge/capabilities/host-lifecycle.js.map +1 -0
  13. package/dist/agent-bridge/capabilities/prefabs.d.ts +5 -0
  14. package/dist/agent-bridge/capabilities/prefabs.d.ts.map +1 -0
  15. package/dist/agent-bridge/capabilities/prefabs.js +735 -0
  16. package/dist/agent-bridge/capabilities/prefabs.js.map +1 -0
  17. package/dist/agent-bridge/capabilities/scene-objects.d.ts +9 -0
  18. package/dist/agent-bridge/capabilities/scene-objects.d.ts.map +1 -0
  19. package/dist/agent-bridge/capabilities/scene-objects.js +394 -0
  20. package/dist/agent-bridge/capabilities/scene-objects.js.map +1 -0
  21. package/dist/agent-bridge/capabilities/selection.d.ts +5 -0
  22. package/dist/agent-bridge/capabilities/selection.d.ts.map +1 -0
  23. package/dist/agent-bridge/capabilities/selection.js +57 -0
  24. package/dist/agent-bridge/capabilities/selection.js.map +1 -0
  25. package/dist/agent-bridge/capabilities/shadows.d.ts +5 -0
  26. package/dist/agent-bridge/capabilities/shadows.d.ts.map +1 -0
  27. package/dist/agent-bridge/capabilities/shadows.js +1876 -0
  28. package/dist/agent-bridge/capabilities/shadows.js.map +1 -0
  29. package/dist/agent-bridge/capabilities/transform.d.ts +5 -0
  30. package/dist/agent-bridge/capabilities/transform.d.ts.map +1 -0
  31. package/dist/agent-bridge/capabilities/transform.js +162 -0
  32. package/dist/agent-bridge/capabilities/transform.js.map +1 -0
  33. package/dist/agent-bridge/capabilities/ui-regions.d.ts +4 -0
  34. package/dist/agent-bridge/capabilities/ui-regions.d.ts.map +1 -0
  35. package/dist/agent-bridge/capabilities/ui-regions.js +168 -0
  36. package/dist/agent-bridge/capabilities/ui-regions.js.map +1 -0
  37. package/dist/agent-bridge/capabilities/viewport.d.ts +5 -0
  38. package/dist/agent-bridge/capabilities/viewport.d.ts.map +1 -0
  39. package/dist/agent-bridge/capabilities/viewport.js +407 -0
  40. package/dist/agent-bridge/capabilities/viewport.js.map +1 -0
  41. package/dist/agent-bridge/capability-sources.d.ts +6 -0
  42. package/dist/agent-bridge/capability-sources.d.ts.map +1 -0
  43. package/dist/agent-bridge/capability-sources.js +26 -0
  44. package/dist/agent-bridge/capability-sources.js.map +1 -0
  45. package/dist/agent-bridge/diagnostics.d.ts +12 -0
  46. package/dist/agent-bridge/diagnostics.d.ts.map +1 -0
  47. package/dist/agent-bridge/diagnostics.js +45 -0
  48. package/dist/agent-bridge/diagnostics.js.map +1 -0
  49. package/dist/agent-bridge/index.d.ts +5 -0
  50. package/dist/agent-bridge/index.d.ts.map +1 -0
  51. package/dist/agent-bridge/index.js +5 -0
  52. package/dist/agent-bridge/index.js.map +1 -0
  53. package/dist/agent-bridge/register.d.ts +4 -0
  54. package/dist/agent-bridge/register.d.ts.map +1 -0
  55. package/dist/agent-bridge/register.js +908 -0
  56. package/dist/agent-bridge/register.js.map +1 -0
  57. package/dist/agent-bridge/shared.d.ts +189 -0
  58. package/dist/agent-bridge/shared.d.ts.map +1 -0
  59. package/dist/agent-bridge/shared.js +39 -0
  60. package/dist/agent-bridge/shared.js.map +1 -0
  61. package/dist/agent-bridge/source-types.d.ts +90 -0
  62. package/dist/agent-bridge/source-types.d.ts.map +1 -0
  63. package/dist/agent-bridge/source-types.js +2 -0
  64. package/dist/agent-bridge/source-types.js.map +1 -0
  65. package/dist/build-info.json +17 -17
  66. package/dist/local-editor-agent-actions.d.ts +8 -1
  67. package/dist/local-editor-agent-actions.d.ts.map +1 -1
  68. package/dist/local-editor-agent-actions.js +171 -12
  69. package/dist/local-editor-agent-actions.js.map +1 -1
  70. package/dist/local-editor-agent-bridge-transport.d.ts +95 -0
  71. package/dist/local-editor-agent-bridge-transport.d.ts.map +1 -0
  72. package/dist/local-editor-agent-bridge-transport.js +340 -0
  73. package/dist/local-editor-agent-bridge-transport.js.map +1 -0
  74. package/dist/local-editor-agent-bridge.d.ts +2 -0
  75. package/dist/local-editor-agent-bridge.d.ts.map +1 -0
  76. package/dist/local-editor-agent-bridge.js +2 -0
  77. package/dist/local-editor-agent-bridge.js.map +1 -0
  78. package/dist/local-editor-agent-context.d.ts +29 -1
  79. package/dist/local-editor-agent-context.d.ts.map +1 -1
  80. package/dist/local-editor-agent-context.js +403 -0
  81. package/dist/local-editor-agent-context.js.map +1 -1
  82. package/dist/local-editor-harness.d.ts +128 -6
  83. package/dist/local-editor-harness.d.ts.map +1 -1
  84. package/dist/local-editor-harness.js +2730 -151
  85. package/dist/local-editor-harness.js.map +1 -1
  86. package/dist/local-editor-marker-graph.d.ts +92 -0
  87. package/dist/local-editor-marker-graph.d.ts.map +1 -0
  88. package/dist/local-editor-marker-graph.js +1432 -0
  89. package/dist/local-editor-marker-graph.js.map +1 -0
  90. package/dist/local-editor-performance-stats.js +1 -1
  91. package/dist/local-editor-performance-stats.js.map +1 -1
  92. package/dist/playable-babylon-facade.d.ts +2 -2
  93. package/dist/playable-babylon-facade.d.ts.map +1 -1
  94. package/dist/playable-babylon-facade.js +1 -1
  95. package/dist/playable-babylon-facade.js.map +1 -1
  96. package/dist/playable-babylon-rendering.js +20 -0
  97. package/dist/playable-babylon-rendering.js.map +1 -1
  98. package/dist/playable-local-editor-host.d.ts +57 -7
  99. package/dist/playable-local-editor-host.d.ts.map +1 -1
  100. package/dist/playable-local-editor-host.js +25 -1
  101. package/dist/playable-local-editor-host.js.map +1 -1
  102. package/dist/playable-sdk.d.ts +4 -2
  103. package/dist/playable-sdk.d.ts.map +1 -1
  104. package/dist/playable-sdk.js +2 -1
  105. package/dist/playable-sdk.js.map +1 -1
  106. package/node_modules/@fps-games/babylon-renderer/dist/shadows/blob-shadow-system.d.ts.map +1 -1
  107. package/node_modules/@fps-games/babylon-renderer/dist/shadows/blob-shadow-system.js +6 -4
  108. package/node_modules/@fps-games/babylon-renderer/dist/shadows/blob-shadow-system.js.map +1 -1
  109. package/node_modules/@fps-games/babylon-renderer/dist/shadows/planar-shadow-shaders.d.ts.map +1 -1
  110. package/node_modules/@fps-games/babylon-renderer/dist/shadows/planar-shadow-shaders.js +103 -1
  111. package/node_modules/@fps-games/babylon-renderer/dist/shadows/planar-shadow-shaders.js.map +1 -1
  112. package/node_modules/@fps-games/babylon-renderer/dist/shadows/planar-shadow-system.d.ts.map +1 -1
  113. package/node_modules/@fps-games/babylon-renderer/dist/shadows/planar-shadow-system.js +330 -27
  114. package/node_modules/@fps-games/babylon-renderer/dist/shadows/planar-shadow-system.js.map +1 -1
  115. package/node_modules/@fps-games/babylon-renderer/dist/shadows/static-projected-shadow-artifact-system.d.ts.map +1 -1
  116. package/node_modules/@fps-games/babylon-renderer/dist/shadows/static-projected-shadow-artifact-system.js +159 -0
  117. package/node_modules/@fps-games/babylon-renderer/dist/shadows/static-projected-shadow-artifact-system.js.map +1 -1
  118. package/node_modules/@fps-games/babylon-renderer/dist/shadows/static-projected-shadow-baker.js +8 -1
  119. package/node_modules/@fps-games/babylon-renderer/dist/shadows/static-projected-shadow-baker.js.map +1 -1
  120. package/node_modules/@fps-games/babylon-renderer/dist/shadows/types.d.ts +53 -2
  121. package/node_modules/@fps-games/babylon-renderer/dist/shadows/types.d.ts.map +1 -1
  122. package/node_modules/@fps-games/babylon-renderer/dist/shadows/types.js +1 -0
  123. package/node_modules/@fps-games/babylon-renderer/dist/shadows/types.js.map +1 -1
  124. package/node_modules/@fps-games/babylon-renderer/package.json +1 -1
  125. package/node_modules/@fps-games/editor-babylon/dist/camera-controller.d.ts.map +1 -1
  126. package/node_modules/@fps-games/editor-babylon/dist/camera-controller.js +11 -0
  127. package/node_modules/@fps-games/editor-babylon/dist/camera-controller.js.map +1 -1
  128. package/node_modules/@fps-games/editor-babylon/dist/editor-sky.d.ts +3 -1
  129. package/node_modules/@fps-games/editor-babylon/dist/editor-sky.d.ts.map +1 -1
  130. package/node_modules/@fps-games/editor-babylon/dist/editor-sky.js +114 -18
  131. package/node_modules/@fps-games/editor-babylon/dist/editor-sky.js.map +1 -1
  132. package/node_modules/@fps-games/editor-babylon/dist/editor-world.d.ts +1 -0
  133. package/node_modules/@fps-games/editor-babylon/dist/editor-world.d.ts.map +1 -1
  134. package/node_modules/@fps-games/editor-babylon/dist/editor-world.js +3 -0
  135. package/node_modules/@fps-games/editor-babylon/dist/editor-world.js.map +1 -1
  136. package/node_modules/@fps-games/editor-babylon/dist/index.d.ts +3 -0
  137. package/node_modules/@fps-games/editor-babylon/dist/index.d.ts.map +1 -1
  138. package/node_modules/@fps-games/editor-babylon/dist/index.js +3 -0
  139. package/node_modules/@fps-games/editor-babylon/dist/index.js.map +1 -1
  140. package/node_modules/@fps-games/editor-babylon/dist/marker-overlay.d.ts +52 -0
  141. package/node_modules/@fps-games/editor-babylon/dist/marker-overlay.d.ts.map +1 -0
  142. package/node_modules/@fps-games/editor-babylon/dist/marker-overlay.js +1395 -0
  143. package/node_modules/@fps-games/editor-babylon/dist/marker-overlay.js.map +1 -0
  144. package/node_modules/@fps-games/editor-babylon/dist/material-property-adapter.d.ts.map +1 -1
  145. package/node_modules/@fps-games/editor-babylon/dist/material-property-adapter.js +4 -65
  146. package/node_modules/@fps-games/editor-babylon/dist/material-property-adapter.js.map +1 -1
  147. package/node_modules/@fps-games/editor-babylon/dist/material-slot-source-resolver.d.ts +28 -0
  148. package/node_modules/@fps-games/editor-babylon/dist/material-slot-source-resolver.d.ts.map +1 -0
  149. package/node_modules/@fps-games/editor-babylon/dist/material-slot-source-resolver.js +235 -0
  150. package/node_modules/@fps-games/editor-babylon/dist/material-slot-source-resolver.js.map +1 -0
  151. package/node_modules/@fps-games/editor-babylon/dist/prefab-comparison-preview-controller.d.ts +37 -0
  152. package/node_modules/@fps-games/editor-babylon/dist/prefab-comparison-preview-controller.d.ts.map +1 -0
  153. package/node_modules/@fps-games/editor-babylon/dist/prefab-comparison-preview-controller.js +451 -0
  154. package/node_modules/@fps-games/editor-babylon/dist/prefab-comparison-preview-controller.js.map +1 -0
  155. package/node_modules/@fps-games/editor-babylon/dist/projection-asset-container-importer.d.ts.map +1 -1
  156. package/node_modules/@fps-games/editor-babylon/dist/projection-asset-container-importer.js +14 -3
  157. package/node_modules/@fps-games/editor-babylon/dist/projection-asset-container-importer.js.map +1 -1
  158. package/node_modules/@fps-games/editor-babylon/dist/projection-pick-resolver.d.ts +1 -0
  159. package/node_modules/@fps-games/editor-babylon/dist/projection-pick-resolver.d.ts.map +1 -1
  160. package/node_modules/@fps-games/editor-babylon/dist/projection-pick-resolver.js +20 -4
  161. package/node_modules/@fps-games/editor-babylon/dist/projection-pick-resolver.js.map +1 -1
  162. package/node_modules/@fps-games/editor-babylon/dist/projection-source-owner-path.d.ts +3 -6
  163. package/node_modules/@fps-games/editor-babylon/dist/projection-source-owner-path.d.ts.map +1 -1
  164. package/node_modules/@fps-games/editor-babylon/dist/projection-source-owner-path.js +4 -37
  165. package/node_modules/@fps-games/editor-babylon/dist/projection-source-owner-path.js.map +1 -1
  166. package/node_modules/@fps-games/editor-babylon/dist/projection.d.ts +74 -1
  167. package/node_modules/@fps-games/editor-babylon/dist/projection.d.ts.map +1 -1
  168. package/node_modules/@fps-games/editor-babylon/dist/projection.js +641 -52
  169. package/node_modules/@fps-games/editor-babylon/dist/projection.js.map +1 -1
  170. package/node_modules/@fps-games/editor-babylon/dist/scene-view-camera-controller.d.ts +11 -0
  171. package/node_modules/@fps-games/editor-babylon/dist/scene-view-camera-controller.d.ts.map +1 -1
  172. package/node_modules/@fps-games/editor-babylon/dist/scene-view-camera-controller.js +113 -29
  173. package/node_modules/@fps-games/editor-babylon/dist/scene-view-camera-controller.js.map +1 -1
  174. package/node_modules/@fps-games/editor-babylon/dist/shadow-preview-controller.d.ts +13 -1
  175. package/node_modules/@fps-games/editor-babylon/dist/shadow-preview-controller.d.ts.map +1 -1
  176. package/node_modules/@fps-games/editor-babylon/dist/shadow-preview-controller.js +543 -3
  177. package/node_modules/@fps-games/editor-babylon/dist/shadow-preview-controller.js.map +1 -1
  178. package/node_modules/@fps-games/editor-babylon/package.json +5 -5
  179. package/node_modules/@fps-games/editor-browser/dist/index.d.ts +8 -2
  180. package/node_modules/@fps-games/editor-browser/dist/index.d.ts.map +1 -1
  181. package/node_modules/@fps-games/editor-browser/dist/index.js +4 -0
  182. package/node_modules/@fps-games/editor-browser/dist/index.js.map +1 -1
  183. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-asset-kind.d.ts +5 -0
  184. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-asset-kind.d.ts.map +1 -0
  185. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-asset-kind.js +23 -0
  186. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-asset-kind.js.map +1 -0
  187. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-context-menu.js +1 -1
  188. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-context-menu.js.map +1 -1
  189. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-actions.d.ts.map +1 -1
  190. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-actions.js +76 -9
  191. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-actions.js.map +1 -1
  192. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-attach-dialog.d.ts.map +1 -1
  193. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-attach-dialog.js +3 -2
  194. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-attach-dialog.js.map +1 -1
  195. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-command-adapter.d.ts +21 -0
  196. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-command-adapter.d.ts.map +1 -0
  197. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-command-adapter.js +75 -0
  198. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-command-adapter.js.map +1 -0
  199. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-controller.d.ts +2 -0
  200. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-controller.d.ts.map +1 -1
  201. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-controller.js +326 -72
  202. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-controller.js.map +1 -1
  203. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-scope.d.ts +5 -0
  204. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-scope.d.ts.map +1 -0
  205. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-scope.js +92 -0
  206. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-scope.js.map +1 -0
  207. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-tree.d.ts +4 -1
  208. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-tree.d.ts.map +1 -1
  209. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-tree.js +22 -7
  210. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-tree.js.map +1 -1
  211. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-view.d.ts +4 -0
  212. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-view.d.ts.map +1 -1
  213. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-view.js +24 -11
  214. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-view.js.map +1 -1
  215. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-icons.d.ts +1 -1
  216. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-icons.d.ts.map +1 -1
  217. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-icons.js +7 -0
  218. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-icons.js.map +1 -1
  219. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-panel-registry.js +1 -1
  220. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-panel-registry.js.map +1 -1
  221. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-panels.d.ts +4 -0
  222. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-panels.d.ts.map +1 -1
  223. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-panels.js +1471 -29
  224. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-panels.js.map +1 -1
  225. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-prefab-stage.d.ts +70 -0
  226. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-prefab-stage.d.ts.map +1 -0
  227. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-prefab-stage.js +171 -0
  228. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-prefab-stage.js.map +1 -0
  229. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-primitives.d.ts +1 -1
  230. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-primitives.d.ts.map +1 -1
  231. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-primitives.js +2 -2
  232. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-primitives.js.map +1 -1
  233. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-shared.d.ts.map +1 -1
  234. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-shared.js +9 -2
  235. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-shared.js.map +1 -1
  236. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-types.d.ts +301 -3
  237. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-types.d.ts.map +1 -1
  238. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-workbench.d.ts +12 -1
  239. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-workbench.d.ts.map +1 -1
  240. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-workbench.js +13 -1
  241. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-workbench.js.map +1 -1
  242. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui.d.ts +6 -4
  243. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui.d.ts.map +1 -1
  244. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui.js +1501 -122
  245. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui.js.map +1 -1
  246. package/node_modules/@fps-games/editor-browser/package.json +3 -3
  247. package/node_modules/@fps-games/editor-core/dist/agent-bridge.d.ts +18 -0
  248. package/node_modules/@fps-games/editor-core/dist/agent-bridge.d.ts.map +1 -0
  249. package/node_modules/@fps-games/editor-core/dist/agent-bridge.js +102 -0
  250. package/node_modules/@fps-games/editor-core/dist/agent-bridge.js.map +1 -0
  251. package/node_modules/@fps-games/editor-core/dist/index.d.ts +1 -0
  252. package/node_modules/@fps-games/editor-core/dist/index.d.ts.map +1 -1
  253. package/node_modules/@fps-games/editor-core/dist/index.js +1 -0
  254. package/node_modules/@fps-games/editor-core/dist/index.js.map +1 -1
  255. package/node_modules/@fps-games/editor-core/dist/scene-graph.d.ts +1 -1
  256. package/node_modules/@fps-games/editor-core/dist/scene-graph.d.ts.map +1 -1
  257. package/node_modules/@fps-games/editor-core/dist/viewport-tools.d.ts +3 -1
  258. package/node_modules/@fps-games/editor-core/dist/viewport-tools.d.ts.map +1 -1
  259. package/node_modules/@fps-games/editor-core/dist/viewport-tools.js +1 -0
  260. package/node_modules/@fps-games/editor-core/dist/viewport-tools.js.map +1 -1
  261. package/node_modules/@fps-games/editor-core/package.json +2 -2
  262. package/node_modules/@fps-games/editor-forge-play/package.json +2 -2
  263. package/node_modules/@fps-games/editor-playable-sdk/dist/asset-database/config.d.ts +3 -0
  264. package/node_modules/@fps-games/editor-playable-sdk/dist/asset-database/config.d.ts.map +1 -0
  265. package/node_modules/@fps-games/editor-playable-sdk/dist/asset-database/config.js +9 -0
  266. package/node_modules/@fps-games/editor-playable-sdk/dist/asset-database/config.js.map +1 -0
  267. package/node_modules/@fps-games/editor-playable-sdk/dist/asset-database/generated-module.d.ts +6 -0
  268. package/node_modules/@fps-games/editor-playable-sdk/dist/asset-database/generated-module.d.ts.map +1 -0
  269. package/node_modules/@fps-games/editor-playable-sdk/dist/asset-database/generated-module.js +89 -0
  270. package/node_modules/@fps-games/editor-playable-sdk/dist/asset-database/generated-module.js.map +1 -0
  271. package/node_modules/@fps-games/editor-playable-sdk/dist/asset-database/identity.d.ts +18 -0
  272. package/node_modules/@fps-games/editor-playable-sdk/dist/asset-database/identity.d.ts.map +1 -0
  273. package/node_modules/@fps-games/editor-playable-sdk/dist/asset-database/identity.js +121 -0
  274. package/node_modules/@fps-games/editor-playable-sdk/dist/asset-database/identity.js.map +1 -0
  275. package/node_modules/@fps-games/editor-playable-sdk/dist/asset-database/index.d.ts +4 -0
  276. package/node_modules/@fps-games/editor-playable-sdk/dist/asset-database/index.d.ts.map +1 -0
  277. package/node_modules/@fps-games/editor-playable-sdk/dist/asset-database/index.js +3 -0
  278. package/node_modules/@fps-games/editor-playable-sdk/dist/asset-database/index.js.map +1 -0
  279. package/node_modules/@fps-games/editor-playable-sdk/dist/asset-database/metadata.d.ts +27 -0
  280. package/node_modules/@fps-games/editor-playable-sdk/dist/asset-database/metadata.d.ts.map +1 -0
  281. package/node_modules/@fps-games/editor-playable-sdk/dist/asset-database/metadata.js +782 -0
  282. package/node_modules/@fps-games/editor-playable-sdk/dist/asset-database/metadata.js.map +1 -0
  283. package/node_modules/@fps-games/editor-playable-sdk/dist/asset-database/node.d.ts +5 -0
  284. package/node_modules/@fps-games/editor-playable-sdk/dist/asset-database/node.d.ts.map +1 -0
  285. package/node_modules/@fps-games/editor-playable-sdk/dist/asset-database/node.js +5 -0
  286. package/node_modules/@fps-games/editor-playable-sdk/dist/asset-database/node.js.map +1 -0
  287. package/node_modules/@fps-games/editor-playable-sdk/dist/asset-database/registry.d.ts +80 -0
  288. package/node_modules/@fps-games/editor-playable-sdk/dist/asset-database/registry.d.ts.map +1 -0
  289. package/node_modules/@fps-games/editor-playable-sdk/dist/asset-database/registry.js +600 -0
  290. package/node_modules/@fps-games/editor-playable-sdk/dist/asset-database/registry.js.map +1 -0
  291. package/node_modules/@fps-games/editor-playable-sdk/dist/asset-database/types.d.ts +51 -0
  292. package/node_modules/@fps-games/editor-playable-sdk/dist/asset-database/types.d.ts.map +1 -0
  293. package/node_modules/@fps-games/editor-playable-sdk/dist/asset-database/types.js +2 -0
  294. package/node_modules/@fps-games/editor-playable-sdk/dist/asset-database/types.js.map +1 -0
  295. package/node_modules/@fps-games/editor-playable-sdk/dist/asset-library/catalog.d.ts.map +1 -1
  296. package/node_modules/@fps-games/editor-playable-sdk/dist/asset-library/catalog.js +17 -3
  297. package/node_modules/@fps-games/editor-playable-sdk/dist/asset-library/catalog.js.map +1 -1
  298. package/node_modules/@fps-games/editor-playable-sdk/dist/asset-library/document.d.ts.map +1 -1
  299. package/node_modules/@fps-games/editor-playable-sdk/dist/asset-library/document.js +2 -1
  300. package/node_modules/@fps-games/editor-playable-sdk/dist/asset-library/document.js.map +1 -1
  301. package/node_modules/@fps-games/editor-playable-sdk/dist/asset-library/types.d.ts +3 -2
  302. package/node_modules/@fps-games/editor-playable-sdk/dist/asset-library/types.d.ts.map +1 -1
  303. package/node_modules/@fps-games/editor-playable-sdk/dist/asset-placement/document.d.ts +1 -1
  304. package/node_modules/@fps-games/editor-playable-sdk/dist/asset-placement/document.d.ts.map +1 -1
  305. package/node_modules/@fps-games/editor-playable-sdk/dist/asset-placement/document.js +48 -20
  306. package/node_modules/@fps-games/editor-playable-sdk/dist/asset-placement/document.js.map +1 -1
  307. package/node_modules/@fps-games/editor-playable-sdk/dist/asset-placement/index.d.ts +1 -1
  308. package/node_modules/@fps-games/editor-playable-sdk/dist/asset-placement/index.d.ts.map +1 -1
  309. package/node_modules/@fps-games/editor-playable-sdk/dist/asset-placement/index.js +1 -1
  310. package/node_modules/@fps-games/editor-playable-sdk/dist/asset-placement/index.js.map +1 -1
  311. package/node_modules/@fps-games/editor-playable-sdk/dist/asset-placement/placement.d.ts.map +1 -1
  312. package/node_modules/@fps-games/editor-playable-sdk/dist/asset-placement/placement.js +2 -1
  313. package/node_modules/@fps-games/editor-playable-sdk/dist/asset-placement/placement.js.map +1 -1
  314. package/node_modules/@fps-games/editor-playable-sdk/dist/asset-placement/types.d.ts +3 -0
  315. package/node_modules/@fps-games/editor-playable-sdk/dist/asset-placement/types.d.ts.map +1 -1
  316. package/node_modules/@fps-games/editor-playable-sdk/dist/document/helpers.d.ts +97 -2
  317. package/node_modules/@fps-games/editor-playable-sdk/dist/document/helpers.d.ts.map +1 -1
  318. package/node_modules/@fps-games/editor-playable-sdk/dist/document/helpers.js +1143 -8
  319. package/node_modules/@fps-games/editor-playable-sdk/dist/document/helpers.js.map +1 -1
  320. package/node_modules/@fps-games/editor-playable-sdk/dist/document/types.d.ts +145 -2
  321. package/node_modules/@fps-games/editor-playable-sdk/dist/document/types.d.ts.map +1 -1
  322. package/node_modules/@fps-games/editor-playable-sdk/dist/field-schema/index.d.ts +1 -1
  323. package/node_modules/@fps-games/editor-playable-sdk/dist/field-schema/index.d.ts.map +1 -1
  324. package/node_modules/@fps-games/editor-playable-sdk/dist/field-schema/index.js +1 -1
  325. package/node_modules/@fps-games/editor-playable-sdk/dist/field-schema/index.js.map +1 -1
  326. package/node_modules/@fps-games/editor-playable-sdk/dist/field-schema/schema.d.ts.map +1 -1
  327. package/node_modules/@fps-games/editor-playable-sdk/dist/field-schema/schema.js +24 -9
  328. package/node_modules/@fps-games/editor-playable-sdk/dist/field-schema/schema.js.map +1 -1
  329. package/node_modules/@fps-games/editor-playable-sdk/dist/field-schema/validators.d.ts +6 -0
  330. package/node_modules/@fps-games/editor-playable-sdk/dist/field-schema/validators.d.ts.map +1 -1
  331. package/node_modules/@fps-games/editor-playable-sdk/dist/field-schema/validators.js +31 -0
  332. package/node_modules/@fps-games/editor-playable-sdk/dist/field-schema/validators.js.map +1 -1
  333. package/node_modules/@fps-games/editor-playable-sdk/dist/index.d.ts +3 -0
  334. package/node_modules/@fps-games/editor-playable-sdk/dist/index.d.ts.map +1 -1
  335. package/node_modules/@fps-games/editor-playable-sdk/dist/index.js +3 -0
  336. package/node_modules/@fps-games/editor-playable-sdk/dist/index.js.map +1 -1
  337. package/node_modules/@fps-games/editor-playable-sdk/dist/inspector/document-sections.d.ts +82 -2
  338. package/node_modules/@fps-games/editor-playable-sdk/dist/inspector/document-sections.d.ts.map +1 -1
  339. package/node_modules/@fps-games/editor-playable-sdk/dist/inspector/document-sections.js +396 -22
  340. package/node_modules/@fps-games/editor-playable-sdk/dist/inspector/document-sections.js.map +1 -1
  341. package/node_modules/@fps-games/editor-playable-sdk/dist/inspector/index.d.ts +1 -1
  342. package/node_modules/@fps-games/editor-playable-sdk/dist/inspector/index.d.ts.map +1 -1
  343. package/node_modules/@fps-games/editor-playable-sdk/dist/inspector/index.js +1 -1
  344. package/node_modules/@fps-games/editor-playable-sdk/dist/inspector/index.js.map +1 -1
  345. package/node_modules/@fps-games/editor-playable-sdk/dist/inspector/validation.d.ts.map +1 -1
  346. package/node_modules/@fps-games/editor-playable-sdk/dist/inspector/validation.js +0 -3
  347. package/node_modules/@fps-games/editor-playable-sdk/dist/inspector/validation.js.map +1 -1
  348. package/node_modules/@fps-games/editor-playable-sdk/dist/lighting-debug/math.d.ts +29 -1
  349. package/node_modules/@fps-games/editor-playable-sdk/dist/lighting-debug/math.d.ts.map +1 -1
  350. package/node_modules/@fps-games/editor-playable-sdk/dist/lighting-debug/math.js +143 -0
  351. package/node_modules/@fps-games/editor-playable-sdk/dist/lighting-debug/math.js.map +1 -1
  352. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/lifecycle.d.ts.map +1 -1
  353. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/lifecycle.js +3 -7
  354. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/lifecycle.js.map +1 -1
  355. package/node_modules/@fps-games/editor-playable-sdk/dist/material-binding/binding.d.ts.map +1 -1
  356. package/node_modules/@fps-games/editor-playable-sdk/dist/material-binding/binding.js +6 -0
  357. package/node_modules/@fps-games/editor-playable-sdk/dist/material-binding/binding.js.map +1 -1
  358. package/node_modules/@fps-games/editor-playable-sdk/dist/material-binding/types.d.ts +2 -10
  359. package/node_modules/@fps-games/editor-playable-sdk/dist/material-binding/types.d.ts.map +1 -1
  360. package/node_modules/@fps-games/editor-playable-sdk/dist/mutation/field-patch.d.ts.map +1 -1
  361. package/node_modules/@fps-games/editor-playable-sdk/dist/mutation/field-patch.js +107 -11
  362. package/node_modules/@fps-games/editor-playable-sdk/dist/mutation/field-patch.js.map +1 -1
  363. package/node_modules/@fps-games/editor-playable-sdk/dist/mutation/reducer.d.ts.map +1 -1
  364. package/node_modules/@fps-games/editor-playable-sdk/dist/mutation/reducer.js +4 -1
  365. package/node_modules/@fps-games/editor-playable-sdk/dist/mutation/reducer.js.map +1 -1
  366. package/node_modules/@fps-games/editor-playable-sdk/dist/mutation/transform.d.ts.map +1 -1
  367. package/node_modules/@fps-games/editor-playable-sdk/dist/mutation/transform.js +19 -1
  368. package/node_modules/@fps-games/editor-playable-sdk/dist/mutation/transform.js.map +1 -1
  369. package/node_modules/@fps-games/editor-playable-sdk/dist/rendering-profile/panel.d.ts.map +1 -1
  370. package/node_modules/@fps-games/editor-playable-sdk/dist/rendering-profile/panel.js +19 -3
  371. package/node_modules/@fps-games/editor-playable-sdk/dist/rendering-profile/panel.js.map +1 -1
  372. package/node_modules/@fps-games/editor-playable-sdk/dist/runtime-preview/assets.d.ts +1 -2
  373. package/node_modules/@fps-games/editor-playable-sdk/dist/runtime-preview/assets.d.ts.map +1 -1
  374. package/node_modules/@fps-games/editor-playable-sdk/dist/runtime-preview/assets.js +0 -14
  375. package/node_modules/@fps-games/editor-playable-sdk/dist/runtime-preview/assets.js.map +1 -1
  376. package/node_modules/@fps-games/editor-playable-sdk/dist/runtime-preview/import-plan.d.ts +1 -7
  377. package/node_modules/@fps-games/editor-playable-sdk/dist/runtime-preview/import-plan.d.ts.map +1 -1
  378. package/node_modules/@fps-games/editor-playable-sdk/dist/runtime-preview/import-plan.js +3 -32
  379. package/node_modules/@fps-games/editor-playable-sdk/dist/runtime-preview/import-plan.js.map +1 -1
  380. package/node_modules/@fps-games/editor-playable-sdk/dist/runtime-preview/nodes.d.ts.map +1 -1
  381. package/node_modules/@fps-games/editor-playable-sdk/dist/runtime-preview/nodes.js +82 -63
  382. package/node_modules/@fps-games/editor-playable-sdk/dist/runtime-preview/nodes.js.map +1 -1
  383. package/node_modules/@fps-games/editor-playable-sdk/dist/runtime-preview/types.d.ts +7 -23
  384. package/node_modules/@fps-games/editor-playable-sdk/dist/runtime-preview/types.d.ts.map +1 -1
  385. package/node_modules/@fps-games/editor-playable-sdk/dist/scene-compiler/compiler.d.ts +5 -0
  386. package/node_modules/@fps-games/editor-playable-sdk/dist/scene-compiler/compiler.d.ts.map +1 -0
  387. package/node_modules/@fps-games/editor-playable-sdk/dist/scene-compiler/compiler.js +996 -0
  388. package/node_modules/@fps-games/editor-playable-sdk/dist/scene-compiler/compiler.js.map +1 -0
  389. package/node_modules/@fps-games/editor-playable-sdk/dist/scene-compiler/index.d.ts +3 -0
  390. package/node_modules/@fps-games/editor-playable-sdk/dist/scene-compiler/index.d.ts.map +1 -0
  391. package/node_modules/@fps-games/editor-playable-sdk/dist/scene-compiler/index.js +3 -0
  392. package/node_modules/@fps-games/editor-playable-sdk/dist/scene-compiler/index.js.map +1 -0
  393. package/node_modules/@fps-games/editor-playable-sdk/dist/scene-compiler/types.d.ts +152 -0
  394. package/node_modules/@fps-games/editor-playable-sdk/dist/scene-compiler/types.d.ts.map +1 -0
  395. package/node_modules/@fps-games/editor-playable-sdk/dist/scene-compiler/types.js +2 -0
  396. package/node_modules/@fps-games/editor-playable-sdk/dist/scene-compiler/types.js.map +1 -0
  397. package/node_modules/@fps-games/editor-playable-sdk/dist/scene-source/protocol.d.ts.map +1 -1
  398. package/node_modules/@fps-games/editor-playable-sdk/dist/scene-source/protocol.js +44 -2
  399. package/node_modules/@fps-games/editor-playable-sdk/dist/scene-source/protocol.js.map +1 -1
  400. package/node_modules/@fps-games/editor-playable-sdk/dist/serialized-property/descriptors.d.ts +1 -0
  401. package/node_modules/@fps-games/editor-playable-sdk/dist/serialized-property/descriptors.d.ts.map +1 -1
  402. package/node_modules/@fps-games/editor-playable-sdk/dist/serialized-property/descriptors.js +244 -12
  403. package/node_modules/@fps-games/editor-playable-sdk/dist/serialized-property/descriptors.js.map +1 -1
  404. package/node_modules/@fps-games/editor-playable-sdk/dist/serialized-property/inspector.d.ts.map +1 -1
  405. package/node_modules/@fps-games/editor-playable-sdk/dist/serialized-property/inspector.js +216 -67
  406. package/node_modules/@fps-games/editor-playable-sdk/dist/serialized-property/inspector.js.map +1 -1
  407. package/node_modules/@fps-games/editor-playable-sdk/dist/serialized-property/object.d.ts.map +1 -1
  408. package/node_modules/@fps-games/editor-playable-sdk/dist/serialized-property/object.js +7 -4
  409. package/node_modules/@fps-games/editor-playable-sdk/dist/serialized-property/object.js.map +1 -1
  410. package/node_modules/@fps-games/editor-playable-sdk/dist/serialized-property/patch.d.ts.map +1 -1
  411. package/node_modules/@fps-games/editor-playable-sdk/dist/serialized-property/patch.js +45 -1
  412. package/node_modules/@fps-games/editor-playable-sdk/dist/serialized-property/patch.js.map +1 -1
  413. package/node_modules/@fps-games/editor-playable-sdk/dist/session/hierarchy.d.ts.map +1 -1
  414. package/node_modules/@fps-games/editor-playable-sdk/dist/session/hierarchy.js +2 -1
  415. package/node_modules/@fps-games/editor-playable-sdk/dist/session/hierarchy.js.map +1 -1
  416. package/node_modules/@fps-games/editor-playable-sdk/dist/shadow-system/index.d.ts +5 -0
  417. package/node_modules/@fps-games/editor-playable-sdk/dist/shadow-system/index.d.ts.map +1 -0
  418. package/node_modules/@fps-games/editor-playable-sdk/dist/shadow-system/index.js +5 -0
  419. package/node_modules/@fps-games/editor-playable-sdk/dist/shadow-system/index.js.map +1 -0
  420. package/node_modules/@fps-games/editor-playable-sdk/dist/shadow-system/legacy.d.ts +21 -0
  421. package/node_modules/@fps-games/editor-playable-sdk/dist/shadow-system/legacy.d.ts.map +1 -0
  422. package/node_modules/@fps-games/editor-playable-sdk/dist/shadow-system/legacy.js +158 -0
  423. package/node_modules/@fps-games/editor-playable-sdk/dist/shadow-system/legacy.js.map +1 -0
  424. package/node_modules/@fps-games/editor-playable-sdk/dist/shadow-system/quality.d.ts +5 -0
  425. package/node_modules/@fps-games/editor-playable-sdk/dist/shadow-system/quality.d.ts.map +1 -0
  426. package/node_modules/@fps-games/editor-playable-sdk/dist/shadow-system/quality.js +83 -0
  427. package/node_modules/@fps-games/editor-playable-sdk/dist/shadow-system/quality.js.map +1 -0
  428. package/node_modules/@fps-games/editor-playable-sdk/dist/shadow-system/resolver.d.ts +35 -0
  429. package/node_modules/@fps-games/editor-playable-sdk/dist/shadow-system/resolver.d.ts.map +1 -0
  430. package/node_modules/@fps-games/editor-playable-sdk/dist/shadow-system/resolver.js +363 -0
  431. package/node_modules/@fps-games/editor-playable-sdk/dist/shadow-system/resolver.js.map +1 -0
  432. package/node_modules/@fps-games/editor-playable-sdk/dist/shadow-system/types.d.ts +105 -0
  433. package/node_modules/@fps-games/editor-playable-sdk/dist/shadow-system/types.d.ts.map +1 -0
  434. package/node_modules/@fps-games/editor-playable-sdk/dist/shadow-system/types.js +6 -0
  435. package/node_modules/@fps-games/editor-playable-sdk/dist/shadow-system/types.js.map +1 -0
  436. package/node_modules/@fps-games/editor-playable-sdk/dist/static-shadows/artifact.d.ts +3 -0
  437. package/node_modules/@fps-games/editor-playable-sdk/dist/static-shadows/artifact.d.ts.map +1 -1
  438. package/node_modules/@fps-games/editor-playable-sdk/dist/static-shadows/artifact.js +44 -0
  439. package/node_modules/@fps-games/editor-playable-sdk/dist/static-shadows/artifact.js.map +1 -1
  440. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/asset-authoring.d.ts +26 -0
  441. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/asset-authoring.d.ts.map +1 -0
  442. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/asset-authoring.js +105 -0
  443. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/asset-authoring.js.map +1 -0
  444. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/index.d.ts +3 -0
  445. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/index.d.ts.map +1 -1
  446. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/index.js +3 -0
  447. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/index.js.map +1 -1
  448. package/node_modules/@fps-games/editor-playable-sdk/package.json +3 -3
  449. package/node_modules/@fps-games/editor-protocol/dist/agent-bridge.d.ts +1127 -0
  450. package/node_modules/@fps-games/editor-protocol/dist/agent-bridge.d.ts.map +1 -0
  451. package/node_modules/@fps-games/editor-protocol/dist/agent-bridge.js +2180 -0
  452. package/node_modules/@fps-games/editor-protocol/dist/agent-bridge.js.map +1 -0
  453. package/node_modules/@fps-games/editor-protocol/dist/agent-trace.d.ts +68 -0
  454. package/node_modules/@fps-games/editor-protocol/dist/agent-trace.d.ts.map +1 -0
  455. package/node_modules/@fps-games/editor-protocol/dist/agent-trace.js +23 -0
  456. package/node_modules/@fps-games/editor-protocol/dist/agent-trace.js.map +1 -0
  457. package/node_modules/@fps-games/editor-protocol/dist/agent.d.ts +57 -3
  458. package/node_modules/@fps-games/editor-protocol/dist/agent.d.ts.map +1 -1
  459. package/node_modules/@fps-games/editor-protocol/dist/agent.js.map +1 -1
  460. package/node_modules/@fps-games/editor-protocol/dist/index.d.ts +21 -0
  461. package/node_modules/@fps-games/editor-protocol/dist/index.d.ts.map +1 -1
  462. package/node_modules/@fps-games/editor-protocol/dist/index.js +3 -0
  463. package/node_modules/@fps-games/editor-protocol/dist/index.js.map +1 -1
  464. package/node_modules/@fps-games/editor-protocol/dist/marker-graph.d.ts +128 -0
  465. package/node_modules/@fps-games/editor-protocol/dist/marker-graph.d.ts.map +1 -0
  466. package/node_modules/@fps-games/editor-protocol/dist/marker-graph.js +2 -0
  467. package/node_modules/@fps-games/editor-protocol/dist/marker-graph.js.map +1 -0
  468. package/node_modules/@fps-games/editor-protocol/package.json +1 -1
  469. package/package.json +8 -8
@@ -0,0 +1,600 @@
1
+ import crypto from 'node:crypto';
2
+ import fs from 'node:fs/promises';
3
+ import path from 'node:path';
4
+ import { createPlayableEditorAssetGuid, createPlayableEditorAssetId, getPlayableEditorAssetKindExtensions, normalizePlayableEditorAssetCodeKey, normalizePlayableEditorAssetDisplayName, normalizePlayableEditorAssetKind, PLAYABLE_EDITOR_DEFAULT_EXTENSIONS, } from './identity.js';
5
+ import { generatePlayableEditorAssetCatalogModule, } from './generated-module.js';
6
+ import { resolvePlayableEditorAssetMetadata, } from './metadata.js';
7
+ export class PlayableEditorAssetRegistryError extends Error {
8
+ constructor(message, details = {}) {
9
+ super(message);
10
+ this.name = 'PlayableEditorAssetRegistryError';
11
+ this.details = details;
12
+ }
13
+ }
14
+ export function parsePlayableEditorAssetRegistryArgs(argv) {
15
+ const args = {};
16
+ for (let index = 0; index < argv.length; index += 1) {
17
+ const item = argv[index];
18
+ if (item === '--unregister') {
19
+ args.unregister = true;
20
+ continue;
21
+ }
22
+ if (item === '--payload') {
23
+ args.payload = argv[index + 1];
24
+ index += 1;
25
+ continue;
26
+ }
27
+ if (item === '--asset-id') {
28
+ args.assetId = argv[index + 1];
29
+ index += 1;
30
+ continue;
31
+ }
32
+ if (item === '--guid') {
33
+ args.guid = argv[index + 1];
34
+ index += 1;
35
+ continue;
36
+ }
37
+ if (item === '--delete-file') {
38
+ args.deleteFile = true;
39
+ continue;
40
+ }
41
+ if (item === '--keep-file') {
42
+ args.deleteFile = false;
43
+ continue;
44
+ }
45
+ if (item === '--force') {
46
+ args.force = true;
47
+ continue;
48
+ }
49
+ if (item === '--help' || item === '-h') {
50
+ args.help = true;
51
+ }
52
+ }
53
+ return args;
54
+ }
55
+ export async function runPlayableEditorAssetRegistryCli(config, argv = process.argv.slice(2)) {
56
+ const args = parsePlayableEditorAssetRegistryArgs(argv);
57
+ const rules = await loadPlayableEditorAssetRegistryRules(config);
58
+ const errorCodes = readRecord(rules.errorCodes);
59
+ const fail = (message, details = {}) => {
60
+ const error = { ok: false, error: message, ...details };
61
+ process.stderr.write(`${JSON.stringify(error, null, 2)}\n`);
62
+ process.exit(1);
63
+ };
64
+ try {
65
+ if (args.help) {
66
+ process.stdout.write([
67
+ 'Usage:',
68
+ ` ${config.commands?.register ?? 'npm run asset:register'} -- --payload /path/to/payload.json`,
69
+ ` ${config.commands?.unregister ?? 'npm run asset:unregister'} -- --payload /path/to/payload.json`,
70
+ ` ${config.commands?.unregister ?? 'npm run asset:unregister'} -- --asset-id asset_xxx [--keep-file] [--force]`,
71
+ ` ${config.commands?.unregister ?? 'npm run asset:unregister'} -- --guid xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx [--keep-file] [--force]`,
72
+ '',
73
+ ].join('\n'));
74
+ return;
75
+ }
76
+ if (args.unregister) {
77
+ const result = await unregisterPlayableEditorAsset(config, args, errorCodes);
78
+ process.stdout.write(`${JSON.stringify(result)}\n`);
79
+ return;
80
+ }
81
+ const result = await registerPlayableEditorAsset(config, args, errorCodes);
82
+ process.stdout.write(`${JSON.stringify(result)}\n`);
83
+ }
84
+ catch (error) {
85
+ if (error instanceof PlayableEditorAssetRegistryError) {
86
+ fail(error.message, error.details);
87
+ }
88
+ fail('asset_register_failed', {
89
+ message: error instanceof Error ? error.message : String(error),
90
+ });
91
+ }
92
+ }
93
+ export async function registerPlayableEditorAsset(config, args, errorCodes = {}) {
94
+ if (!args.payload)
95
+ throw new PlayableEditorAssetRegistryError('missing_payload_arg');
96
+ const payload = await loadPayload(config, args);
97
+ const sourcePath = path.resolve(config.cwd, String(payload.sourcePath ?? payload.assetPath ?? ''));
98
+ const sourceExtension = resolveSourceExtension(config, sourcePath);
99
+ if (!sourceExtension) {
100
+ throw new PlayableEditorAssetRegistryError(config.unsupportedSourceErrorCode ?? errorCodes.sourceMustBeSupportedAsset ?? 'source_must_be_supported_asset', {
101
+ sourcePath,
102
+ supportedExtensions: normalizeSupportedExtensions(config),
103
+ });
104
+ }
105
+ try {
106
+ await fs.access(sourcePath);
107
+ }
108
+ catch {
109
+ throw new PlayableEditorAssetRegistryError(errorCodes.sourceFileNotFound ?? 'source_file_not_found', { sourcePath });
110
+ }
111
+ await fs.mkdir(config.generatedDir, { recursive: true });
112
+ const manifest = await loadPlayableEditorAssetManifest(config);
113
+ const audit = await getFileAudit(sourcePath);
114
+ const kind = normalizePlayableEditorAssetKind(payload.kind ?? payload.assetKind ?? payload.assetType, sourcePath);
115
+ if (!kind) {
116
+ throw new PlayableEditorAssetRegistryError('unsupported_asset_kind', { sourcePath, assetType: payload.assetType });
117
+ }
118
+ assertAssetKindExtension(kind, sourcePath, 'source_path');
119
+ const originalFileName = String(payload.assetName ?? path.basename(sourcePath));
120
+ const existing = findReusableCatalogEntry(manifest, payload, sourcePath, audit, kind);
121
+ const requestedGuid = readOptionalString(payload.guid);
122
+ if (existing && requestedGuid && existing.guid !== requestedGuid) {
123
+ throw new PlayableEditorAssetRegistryError('payload_guid_must_match_existing_asset', {
124
+ guid: requestedGuid,
125
+ existingGuid: existing.guid,
126
+ existingAssetId: existing.assetId,
127
+ });
128
+ }
129
+ const guid = existing?.guid ?? requestedGuid ?? createPlayableEditorAssetGuid();
130
+ const requestedProjectAssetId = readOptionalString(payload.projectAssetId);
131
+ const assetId = createPlayableEditorAssetId(kind, guid);
132
+ if (existing?.assetId && existing.assetId !== assetId) {
133
+ throw new PlayableEditorAssetRegistryError('manifest_asset_id_must_match_guid', {
134
+ guid,
135
+ assetId: existing.assetId,
136
+ expectedAssetId: assetId,
137
+ });
138
+ }
139
+ if (requestedProjectAssetId && requestedProjectAssetId !== assetId) {
140
+ throw new PlayableEditorAssetRegistryError('project_asset_id_must_match_guid', {
141
+ guid,
142
+ projectAssetId: requestedProjectAssetId,
143
+ expectedAssetId: assetId,
144
+ });
145
+ }
146
+ const targetFileName = `${assetId}${sourceExtension}`;
147
+ const targetRelativePath = resolveTargetRelativePath(config, {
148
+ existing,
149
+ sourcePath,
150
+ kind,
151
+ targetFileName,
152
+ });
153
+ const targetPath = resolveCatalogAssetPath(config, targetRelativePath, kind, 'target_path');
154
+ const now = new Date().toISOString();
155
+ let copiedNewTarget = false;
156
+ let registeredEntry = null;
157
+ try {
158
+ await fs.mkdir(path.dirname(targetPath), { recursive: true });
159
+ const targetMatchesSource = isSamePath(sourcePath, targetPath);
160
+ const targetExists = targetMatchesSource || await fileExists(targetPath);
161
+ const targetNeedsRefresh = !existing || existing.contentHash !== audit.contentHash || !targetExists;
162
+ const shouldCopy = !targetMatchesSource && targetNeedsRefresh;
163
+ if (shouldCopy) {
164
+ await fs.copyFile(sourcePath, targetPath);
165
+ copiedNewTarget = !existing;
166
+ }
167
+ const nextEntry = normalizeManifestEntry({
168
+ ...(existing ?? {}),
169
+ guid,
170
+ assetId,
171
+ kind,
172
+ displayName: normalizePlayableEditorAssetDisplayName(payload.displayName, originalFileName),
173
+ relativePath: targetRelativePath,
174
+ originalFileName,
175
+ codeKey: normalizePlayableEditorAssetCodeKey(payload.codeKey ?? payload.assetName, originalFileName),
176
+ placeable: payload.placeable === false ? false : (kind === 'model' || kind === 'texture'),
177
+ contentHash: audit.contentHash,
178
+ byteSize: audit.byteSize,
179
+ external: normalizeExternalRef(payload.external ?? {
180
+ platformAssetId: payload.platformAssetId ?? payload.assetId,
181
+ assetPath: payload.assetPath,
182
+ assetUrl: payload.assetUrl,
183
+ }),
184
+ metadata: await resolveManifestEntryMetadata(config, {
185
+ existing,
186
+ payload,
187
+ sourcePath,
188
+ targetPath,
189
+ kind,
190
+ guid,
191
+ assetId,
192
+ }),
193
+ createdAt: existing?.createdAt ?? now,
194
+ updatedAt: targetNeedsRefresh ? now : (existing?.updatedAt ?? now),
195
+ });
196
+ if (!nextEntry)
197
+ throw new PlayableEditorAssetRegistryError('invalid_manifest_entry', { assetId, guid });
198
+ registeredEntry = nextEntry;
199
+ const existingIndex = manifest.findIndex((entry) => entry.guid === guid || entry.assetId === assetId);
200
+ if (existingIndex >= 0)
201
+ manifest[existingIndex] = nextEntry;
202
+ else
203
+ manifest.push(nextEntry);
204
+ manifest.sort(compareCatalogEntries);
205
+ await writeGeneratedRegistry(config, manifest);
206
+ }
207
+ catch (error) {
208
+ if (copiedNewTarget) {
209
+ await fs.rm(targetPath, { force: true }).catch(() => { });
210
+ }
211
+ throw error;
212
+ }
213
+ return {
214
+ ok: true,
215
+ guid,
216
+ assetId,
217
+ kind,
218
+ ...(registeredEntry?.external ? { external: registeredEntry.external } : {}),
219
+ displayName: registeredEntry?.displayName,
220
+ originalFileName: registeredEntry?.originalFileName,
221
+ assetUrl: publicUrlForCatalogRelativePath(config, targetRelativePath, kind),
222
+ targetPath,
223
+ manifestPath: config.manifestPath,
224
+ registryPath: config.registryPath,
225
+ };
226
+ }
227
+ export async function unregisterPlayableEditorAsset(config, args, errorCodes = {}) {
228
+ const payload = await loadPayload(config, args);
229
+ const assetId = readOptionalString(args.assetId ?? payload?.assetId);
230
+ const guid = readOptionalString(args.guid ?? payload?.guid);
231
+ if (!assetId && !guid) {
232
+ throw new PlayableEditorAssetRegistryError(errorCodes.missingAssetId ?? 'missing_asset_id');
233
+ }
234
+ const deleteFile = resolveDeleteFile(args, payload);
235
+ const force = resolveForce(args, payload);
236
+ await fs.mkdir(config.generatedDir, { recursive: true });
237
+ const manifest = await loadPlayableEditorAssetManifest(config);
238
+ const entryIndex = manifest.findIndex((entry) => (assetId && entry.assetId === assetId) || (guid && entry.guid === guid));
239
+ if (entryIndex < 0) {
240
+ throw new PlayableEditorAssetRegistryError(errorCodes.manifestEntryNotFound ?? 'manifest_entry_not_found', {
241
+ assetId,
242
+ guid,
243
+ manifestPath: config.manifestPath,
244
+ });
245
+ }
246
+ const entry = manifest[entryIndex];
247
+ if (!entry)
248
+ throw new PlayableEditorAssetRegistryError('manifest_entry_not_found', { assetId, guid });
249
+ await assertAssetCanBeUnregistered(config, entry.assetId, force, errorCodes);
250
+ manifest.splice(entryIndex, 1);
251
+ let deletedFile = false;
252
+ let targetPath = null;
253
+ if (deleteFile) {
254
+ targetPath = resolveCatalogAssetPath(config, entry.relativePath, entry.kind, 'unregister_target_path');
255
+ await fs.rm(targetPath, { force: true });
256
+ deletedFile = true;
257
+ }
258
+ await writeGeneratedRegistry(config, manifest);
259
+ return {
260
+ ok: true,
261
+ guid: entry.guid,
262
+ assetId: entry.assetId,
263
+ kind: entry.kind,
264
+ removed: true,
265
+ deleteFile,
266
+ force,
267
+ deletedFile,
268
+ targetPath,
269
+ manifestPath: config.manifestPath,
270
+ registryPath: config.registryPath,
271
+ };
272
+ }
273
+ export async function loadPlayableEditorAssetManifest(config) {
274
+ return (await readJson(config.manifestPath, []))
275
+ .map(normalizeManifestEntry)
276
+ .filter((entry) => Boolean(entry));
277
+ }
278
+ export async function loadPlayableEditorAssetRegistryRules(config) {
279
+ if (config.loadRules)
280
+ return config.loadRules();
281
+ if (!config.rulesPath)
282
+ return {};
283
+ return readJson(config.rulesPath, {});
284
+ }
285
+ function normalizeExtensionList(value) {
286
+ const entries = Array.isArray(value) ? value : [value];
287
+ return entries
288
+ .filter((entry) => typeof entry === 'string' && Boolean(entry.trim()))
289
+ .map((entry) => {
290
+ const normalized = entry.trim().toLowerCase();
291
+ return normalized.startsWith('.') ? normalized : `.${normalized}`;
292
+ });
293
+ }
294
+ function normalizeSupportedExtensions(config) {
295
+ const extensions = normalizeExtensionList(config.supportedExtensions ?? config.supportedExtension);
296
+ return extensions.length > 0 ? extensions : normalizeExtensionList(PLAYABLE_EDITOR_DEFAULT_EXTENSIONS);
297
+ }
298
+ function resolveSourceExtension(config, sourcePath) {
299
+ const lowerPath = sourcePath.toLowerCase();
300
+ return normalizeSupportedExtensions(config).find((extension) => lowerPath.endsWith(extension)) ?? null;
301
+ }
302
+ function resolveTargetRelativePath(config, input) {
303
+ if (input.existing?.relativePath)
304
+ return input.existing.relativePath;
305
+ return resolveReusableProjectAssetRelativePath(config, input.sourcePath, input.kind)
306
+ ?? callRelativeImportedPath(config, input.kind, input.targetFileName);
307
+ }
308
+ function callRelativeImportedPath(config, kind, fileName) {
309
+ const fn = config.relativeImportedPath;
310
+ return fn.length >= 2 ? fn(kind, fileName) : fn({ kind, fileName });
311
+ }
312
+ function resolveReusableProjectAssetRelativePath(config, sourcePath, kind) {
313
+ const assetRoot = config.assetRootDir ?? config.assetsDir;
314
+ if (!assetRoot)
315
+ return null;
316
+ const absoluteSource = path.resolve(sourcePath);
317
+ if (!isInsideOrSamePath(path.resolve(assetRoot), absoluteSource))
318
+ return null;
319
+ if (isInsideOrSamePath(path.resolve(config.generatedDir), absoluteSource))
320
+ return null;
321
+ assertAssetKindExtension(kind, absoluteSource, 'source_path');
322
+ return path.relative(config.generatedDir, absoluteSource).split(path.sep).join('/');
323
+ }
324
+ function isInsideOrSamePath(parent, child) {
325
+ const relative = path.relative(parent, child);
326
+ return relative === '' || (!relative.startsWith('..') && !path.isAbsolute(relative));
327
+ }
328
+ function isSamePath(left, right) {
329
+ return path.relative(path.resolve(left), path.resolve(right)) === '';
330
+ }
331
+ function assertInside(parent, child, label) {
332
+ const relative = path.relative(parent, child);
333
+ if (relative.startsWith('..') || path.isAbsolute(relative)) {
334
+ throw new PlayableEditorAssetRegistryError(`${label}_outside_allowed_directory`, { parent, child });
335
+ }
336
+ }
337
+ function assertOutside(parent, child, label) {
338
+ const relative = path.relative(parent, child);
339
+ if (!relative.startsWith('..') && !path.isAbsolute(relative)) {
340
+ throw new PlayableEditorAssetRegistryError(`${label}_inside_forbidden_directory`, { parent, child });
341
+ }
342
+ }
343
+ function resolveCatalogAssetPath(config, relativePath, kind, label) {
344
+ const targetPath = path.resolve(config.generatedDir, relativePath);
345
+ const assetRoot = path.resolve(config.assetRootDir ?? config.assetsDir ?? config.importedDir ?? config.generatedDir);
346
+ assertInside(assetRoot, targetPath, label);
347
+ assertOutside(path.resolve(config.generatedDir), targetPath, label);
348
+ assertAssetKindExtension(kind, targetPath, label);
349
+ return targetPath;
350
+ }
351
+ function publicUrlForCatalogRelativePath(config, relativePath, kind) {
352
+ const targetPath = resolveCatalogAssetPath(config, relativePath, kind, 'asset_url_path');
353
+ if (typeof config.publicUrlForCatalogRelativePath === 'function') {
354
+ return config.publicUrlForCatalogRelativePath(relativePath);
355
+ }
356
+ if (typeof config.publicUrlForRelativePath === 'function') {
357
+ return config.publicUrlForRelativePath(relativePath);
358
+ }
359
+ const relativeToCwd = path.relative(config.cwd, targetPath).split(path.sep).join('/');
360
+ return `/${relativeToCwd}`;
361
+ }
362
+ function assertAssetKindExtension(kind, filePath, label) {
363
+ const extension = path.extname(filePath).toLowerCase();
364
+ const supportedExtensions = getPlayableEditorAssetKindExtensions(kind);
365
+ if (supportedExtensions.includes(extension))
366
+ return;
367
+ throw new PlayableEditorAssetRegistryError(`${label}_unsupported_extension`, {
368
+ kind,
369
+ filePath,
370
+ extension,
371
+ supportedExtensions,
372
+ });
373
+ }
374
+ async function readJson(filePath, fallback) {
375
+ try {
376
+ return JSON.parse(await fs.readFile(filePath, 'utf8'));
377
+ }
378
+ catch (error) {
379
+ if (isNodeError(error) && error.code === 'ENOENT')
380
+ return fallback;
381
+ throw error;
382
+ }
383
+ }
384
+ async function loadPayload(config, args) {
385
+ if (!args.payload)
386
+ return {};
387
+ const payloadPath = path.resolve(config.cwd, args.payload);
388
+ const payload = await readJson(payloadPath, null);
389
+ if (!payload || typeof payload !== 'object' || Array.isArray(payload)) {
390
+ throw new PlayableEditorAssetRegistryError('invalid_payload_json', { payloadPath });
391
+ }
392
+ return payload;
393
+ }
394
+ function normalizeManifestEntry(entry) {
395
+ if (!entry || typeof entry !== 'object' || Array.isArray(entry))
396
+ return null;
397
+ const record = entry;
398
+ const guid = readOptionalString(record.guid);
399
+ const assetId = readOptionalString(record.assetId);
400
+ const kind = normalizePlayableEditorAssetKind(record.kind ?? record.assetKind ?? record.assetType, record.relativePath);
401
+ const displayName = readOptionalString(record.displayName);
402
+ const relativePath = readOptionalString(record.relativePath);
403
+ if (!guid || !assetId || !kind || !displayName || !relativePath)
404
+ return null;
405
+ const metadata = normalizeMetadata(record.metadata);
406
+ const originalFileName = readOptionalString(record.originalFileName);
407
+ const codeKey = readOptionalString(record.codeKey);
408
+ const contentHash = readOptionalString(record.contentHash);
409
+ const external = normalizeExternalRef(record.external);
410
+ const createdAt = readOptionalString(record.createdAt);
411
+ const updatedAt = readOptionalString(record.updatedAt);
412
+ return {
413
+ guid,
414
+ assetId,
415
+ kind,
416
+ displayName,
417
+ relativePath,
418
+ ...(originalFileName ? { originalFileName } : {}),
419
+ ...(codeKey ? { codeKey } : {}),
420
+ ...(typeof record.placeable === 'boolean' ? { placeable: record.placeable } : {}),
421
+ ...(contentHash ? { contentHash } : {}),
422
+ ...(typeof record.byteSize === 'number' ? { byteSize: record.byteSize } : {}),
423
+ ...(external ? { external } : {}),
424
+ ...(metadata ? { metadata } : {}),
425
+ ...(createdAt ? { createdAt } : {}),
426
+ ...(updatedAt ? { updatedAt } : {}),
427
+ };
428
+ }
429
+ function normalizeExternalRef(value) {
430
+ if (!value || typeof value !== 'object' || Array.isArray(value))
431
+ return null;
432
+ const record = value;
433
+ const platformAssetId = readOptionalString(record.platformAssetId);
434
+ const assetPath = readOptionalString(record.assetPath);
435
+ const assetUrl = readOptionalString(record.assetUrl);
436
+ if (!platformAssetId && !assetPath && !assetUrl)
437
+ return null;
438
+ return {
439
+ ...(platformAssetId ? { platformAssetId } : {}),
440
+ ...(assetPath ? { assetPath } : {}),
441
+ ...(assetUrl ? { assetUrl } : {}),
442
+ };
443
+ }
444
+ function normalizeMetadata(value) {
445
+ if (!value || typeof value !== 'object' || Array.isArray(value))
446
+ return null;
447
+ return structuredClone(value);
448
+ }
449
+ async function resolveManifestEntryMetadata(config, context) {
450
+ const payloadMetadata = normalizeMetadata(context.payload?.metadata);
451
+ if (typeof config.resolveAssetMetadata === 'function') {
452
+ const resolved = await config.resolveAssetMetadata({
453
+ ...context,
454
+ existingMetadata: normalizeMetadata(context.existing?.metadata),
455
+ payloadMetadata,
456
+ });
457
+ const normalized = normalizeMetadata(resolved);
458
+ if (normalized)
459
+ return normalized;
460
+ return null;
461
+ }
462
+ return resolvePlayableEditorAssetMetadata({
463
+ kind: context.kind,
464
+ sourcePath: context.sourcePath,
465
+ existingMetadata: normalizeMetadata(context.existing?.metadata),
466
+ payloadMetadata,
467
+ guid: context.guid,
468
+ assetId: context.assetId,
469
+ cwd: config.cwd,
470
+ assetsDir: config.assetsDir,
471
+ });
472
+ }
473
+ function findReusableCatalogEntry(manifest, payload, sourcePath, audit, kind) {
474
+ const guid = readOptionalString(payload.guid);
475
+ const assetId = readOptionalString(payload.projectAssetId);
476
+ const external = normalizeExternalRef(payload.external ?? {
477
+ platformAssetId: payload.platformAssetId ?? payload.assetId,
478
+ assetPath: payload.assetPath,
479
+ assetUrl: payload.assetUrl,
480
+ });
481
+ if (guid) {
482
+ const byGuid = manifest.find((entry) => entry.guid === guid);
483
+ if (byGuid)
484
+ return byGuid;
485
+ }
486
+ if (assetId) {
487
+ const byAssetId = manifest.find((entry) => entry.assetId === assetId);
488
+ if (byAssetId)
489
+ return byAssetId;
490
+ }
491
+ if (external?.platformAssetId) {
492
+ const byPlatformId = manifest.find((entry) => entry.kind === kind && readExternalPlatformAssetId(entry.external) === external.platformAssetId);
493
+ if (byPlatformId)
494
+ return byPlatformId;
495
+ }
496
+ if (external?.assetPath) {
497
+ const byAssetPath = manifest.find((entry) => entry.kind === kind && readExternalAssetPath(entry.external) === external.assetPath);
498
+ if (byAssetPath)
499
+ return byAssetPath;
500
+ }
501
+ if (audit.contentHash) {
502
+ const byHash = manifest.find((entry) => entry.kind === kind && entry.contentHash === audit.contentHash);
503
+ if (byHash)
504
+ return byHash;
505
+ }
506
+ const normalizedSource = path.resolve(sourcePath);
507
+ return manifest.find((entry) => {
508
+ const assetPath = readExternalAssetPath(entry.external);
509
+ return entry.kind === kind && assetPath && path.resolve(assetPath) === normalizedSource;
510
+ }) ?? null;
511
+ }
512
+ function readExternalPlatformAssetId(value) {
513
+ return readOptionalString(readRecord(value).platformAssetId);
514
+ }
515
+ function readExternalAssetPath(value) {
516
+ return readOptionalString(readRecord(value).assetPath);
517
+ }
518
+ function compareCatalogEntries(a, b) {
519
+ return a.kind.localeCompare(b.kind)
520
+ || a.displayName.localeCompare(b.displayName)
521
+ || a.assetId.localeCompare(b.assetId);
522
+ }
523
+ async function atomicWrite(filePath, content) {
524
+ try {
525
+ const previous = await fs.readFile(filePath, 'utf8');
526
+ if (previous === content)
527
+ return false;
528
+ }
529
+ catch (error) {
530
+ if (!isNodeError(error) || error.code !== 'ENOENT')
531
+ throw error;
532
+ }
533
+ const tmpPath = `${filePath}.tmp-${process.pid}-${Date.now()}`;
534
+ await fs.writeFile(tmpPath, content);
535
+ await fs.rename(tmpPath, filePath);
536
+ return true;
537
+ }
538
+ async function getFileAudit(filePath) {
539
+ const bytes = await fs.readFile(filePath);
540
+ const stats = await fs.stat(filePath);
541
+ return {
542
+ contentHash: `sha256:${crypto.createHash('sha256').update(bytes).digest('hex')}`,
543
+ byteSize: stats.size,
544
+ };
545
+ }
546
+ async function fileExists(filePath) {
547
+ try {
548
+ await fs.access(filePath);
549
+ return true;
550
+ }
551
+ catch {
552
+ return false;
553
+ }
554
+ }
555
+ async function writeGeneratedRegistry(config, manifest) {
556
+ const registryContent = generatePlayableEditorAssetCatalogModule(manifest);
557
+ await fs.mkdir(path.dirname(config.manifestPath), { recursive: true });
558
+ await fs.mkdir(path.dirname(config.registryPath), { recursive: true });
559
+ await atomicWrite(config.manifestPath, `${JSON.stringify(manifest, null, 2)}\n`);
560
+ await atomicWrite(config.registryPath, registryContent);
561
+ }
562
+ function resolveDeleteFile(args, payload) {
563
+ if (typeof args.deleteFile === 'boolean')
564
+ return args.deleteFile;
565
+ if (payload && typeof payload.deleteFile === 'boolean')
566
+ return payload.deleteFile;
567
+ return true;
568
+ }
569
+ function resolveForce(args, payload) {
570
+ return Boolean(args.force || payload?.force === true);
571
+ }
572
+ async function assertAssetCanBeUnregistered(config, assetId, force, errorCodes) {
573
+ if (force || !config.scenePath)
574
+ return;
575
+ const sceneConfig = await readJson(config.scenePath, null);
576
+ const nodes = Array.isArray(sceneConfig?.scene?.nodes) ? sceneConfig.scene.nodes : [];
577
+ const nodeIds = nodes
578
+ .filter((node) => node?.kind === 'instance' && node?.instance?.assetId === assetId)
579
+ .map((node) => node.id)
580
+ .filter(Boolean);
581
+ if (nodeIds.length === 0)
582
+ return;
583
+ throw new PlayableEditorAssetRegistryError(errorCodes.assetStillReferenced ?? 'asset_still_referenced', {
584
+ assetId,
585
+ scenePath: config.scenePath,
586
+ nodeIds,
587
+ });
588
+ }
589
+ function readOptionalString(value) {
590
+ return typeof value === 'string' && value.trim() ? value.trim() : null;
591
+ }
592
+ function readRecord(value) {
593
+ return value && typeof value === 'object' && !Array.isArray(value)
594
+ ? value
595
+ : {};
596
+ }
597
+ function isNodeError(error) {
598
+ return error instanceof Error && 'code' in error;
599
+ }
600
+ //# sourceMappingURL=registry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/asset-database/registry.ts"],"names":[],"mappings":"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"}