@salsita-ai/sdk 0.50.0-develop.5a0bcdee42 → 0.50.0-develop.6310349f36

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 (599) hide show
  1. package/README.md +1 -1
  2. package/dist/admin/create-admin-pages-from-spec.d.ts +1 -1
  3. package/dist/application-spec/generate-application/code/common/index.d.ts +1 -0
  4. package/dist/application-spec/generate-application/code/common/index.js +1 -1
  5. package/dist/application-spec/generate-application/code/common/project-module-list.d.ts +8 -0
  6. package/dist/application-spec/generate-application/code/common/project-module-list.js +3 -0
  7. package/dist/application-spec/generate-application/code/domain-runtime-files.js +1 -1
  8. package/dist/application-spec/generate-application/code/templates/admin-domain-code.d.ts +1 -2
  9. package/dist/application-spec/generate-application/code/templates/admin-domain-code.js +6 -14
  10. package/dist/application-spec/generate-application/code/templates/admin-frontend-code.d.ts +1 -2
  11. package/dist/application-spec/generate-application/code/templates/admin-frontend-code.js +4 -4
  12. package/dist/application-spec/generate-application/code/templates/configurator-domain-code.d.ts +1 -2
  13. package/dist/application-spec/generate-application/code/templates/configurator-domain-code.js +7 -16
  14. package/dist/application-spec/generate-application/code/templates/configurator-frontend-code.d.ts +1 -2
  15. package/dist/application-spec/generate-application/code/templates/configurator-frontend-code.js +7 -9
  16. package/dist/application-spec/generate-application/code/templates/domain-spec/generate-assistant.d.ts +2 -2
  17. package/dist/application-spec/generate-application/code/templates/domain-spec/generate-assistant.js +1 -1
  18. package/dist/application-spec/generate-application/code/templates/domain-spec.js +4 -4
  19. package/dist/application-spec/generate-application/code/templates/domain.js +3 -3
  20. package/dist/application-spec/generate-application/code/templates/skills/phoenix-review-skill.js +1 -1
  21. package/dist/application-spec/generate-application/code/templates/skills/sdk-content.d.ts +2 -1
  22. package/dist/application-spec/generate-application/code/templates/skills/sdk-content.js +1 -2
  23. package/dist/application-spec/generate-application/code/templates/webhook-builders.js +8 -4
  24. package/dist/application-spec/generate-application/runtime/sections/assistant-runtime.d.ts +4 -3
  25. package/dist/application-spec/generate-application/runtime/sections/assistant-runtime.js +1 -1
  26. package/dist/application-spec/parse-application-files/spec/sections/assistant/assistant-field-type.d.ts +3 -8
  27. package/dist/application-spec/parse-application-files/spec/sections/assistant/assistant-field-type.js +1 -1
  28. package/dist/application-spec/parse-application-files/spec/sections/assistant/assistant-schema.d.ts +9 -43
  29. package/dist/application-spec/parse-application-files/spec/sections/assistant/assistant-schema.js +1 -1
  30. package/dist/application-spec/parse-application-files/spec/sections/assistant/assistant-server-settings.d.ts +2 -2
  31. package/dist/application-spec/parse-application-files/spec/sections/assistant/assistant.d.ts +5 -21
  32. package/dist/client/phoenix-api.d.ts +58 -30
  33. package/dist/configurator/application-runtime/extensions/systems/assistant-system/assistant-system.d.ts +16 -4
  34. package/dist/configurator/application-runtime/extensions/systems/assistant-system/assistant-system.js +1 -1
  35. package/dist/configurator/application-runtime/extensions/systems/graphql-system/entity-meta.js +1 -1
  36. package/dist/configurator/application-runtime/extensions/systems/graphql-system/graphql-system.js +1 -1
  37. package/dist/configurator/ui/assistant/AssistantChips.js +1 -1
  38. package/dist/configurator/ui/assistant/tool-chip.d.ts +8 -1
  39. package/dist/configurator/ui/assistant/tool-chip.js +1 -1
  40. package/dist/docs/complex-use-cases/filtered-controls-with-fix-dialog.mdx +84 -98
  41. package/dist/docs/complex-use-cases/navigation-reset-selection.mdx +18 -12
  42. package/dist/docs/index.json +1 -1
  43. package/dist/docs/layouts/custom-price.mdx +14 -16
  44. package/dist/docs/layouts/sidebar/tabs.mdx +24 -21
  45. package/dist/docs/other-features/domain-actions.mdx +1 -1
  46. package/dist/docs/other-features/side-effects.mdx +42 -34
  47. package/dist/docs/other-features/transformers.mdx +1 -1
  48. package/dist/docs/phoenix/admin.mdx +9 -24
  49. package/dist/docs/phoenix/deployments.mdx +1 -1
  50. package/dist/docs/phoenix/localization.mdx +3 -22
  51. package/dist/docs/phoenix/phoenix-cli.mdx +22 -22
  52. package/dist/docs/phoenix/project-structure.mdx +6 -0
  53. package/dist/docs/phoenix/sdk-builder-workflow.mdx +10 -9
  54. package/dist/docs/recipes-and-delete/recipe-hierarchy-selection.mdx +15 -13
  55. package/dist/docs/relations/hierarchy.mdx +13 -2
  56. package/dist/domain/admin-domain/__generated/enhanced-model.d.ts +1 -2
  57. package/dist/domain/admin-domain/__generated/model/versions/v1.d.ts +1 -1
  58. package/dist/domain/admin-domain/__generated/model/versions/v2.d.ts +1 -1
  59. package/dist/domain/admin-domain/__generated/model/versions/v3.d.ts +1 -1
  60. package/dist/domain/admin-domain/__generated/model/versions/v4.d.ts +1 -1
  61. package/dist/domain/admin-domain/__generated/model/versions/v5.d.ts +1 -1
  62. package/dist/domain/admin-domain/__generated/model/versions/v6.d.ts +2 -2
  63. package/dist/domain/admin-domain/__generated/model/versions/v6.js +1 -1
  64. package/dist/domain/admin-domain/implementation/common-admin-expressions.d.ts +1 -4
  65. package/dist/domain/admin-domain/implementation/common-admin-migrations.d.ts +1 -1
  66. package/dist/domain/admin-domain/index.d.ts +3 -4
  67. package/dist/domain/admin-domain/index.js +1 -1
  68. package/dist/domain/application/admin-page-factories.d.ts +1 -1
  69. package/dist/domain/application/application-config.d.ts +25 -75
  70. package/dist/domain/application/assistant/assistant-manifest.d.ts +63 -0
  71. package/dist/domain/application/assistant/assistant-resolved-manifest.d.ts +95 -0
  72. package/dist/domain/application/assistant/assistant-value-type.d.ts +9 -0
  73. package/dist/domain/application/assistant/assistant-value-type.js +1 -0
  74. package/dist/domain/application/assistant/build-assistant-manifest.d.ts +4 -0
  75. package/dist/domain/application/assistant/build-assistant-manifest.js +1 -0
  76. package/dist/domain/application/assistant/generate-assistant-prompt.d.ts +3 -0
  77. package/dist/domain/application/assistant/generate-assistant-prompt.js +1 -0
  78. package/dist/domain/application/assistant/index.d.ts +4 -0
  79. package/dist/domain/application/assistant/index.js +1 -0
  80. package/dist/domain/application/assistant-field-options.d.ts +2 -3
  81. package/dist/domain/application/assistant-mutations.d.ts +2 -5
  82. package/dist/domain/application/assistant-mutations.js +1 -1
  83. package/dist/domain/application/assistant-recipe-groups.d.ts +2 -6
  84. package/dist/domain/application/configurator-builder.d.ts +33 -18
  85. package/dist/domain/application/configurator-builder.js +1 -1
  86. package/dist/domain/application/element-registration.d.ts +5 -0
  87. package/dist/domain/application/element-registration.js +1 -1
  88. package/dist/domain/application/handler-registration.d.ts +5 -0
  89. package/dist/domain/application/handler-registration.js +1 -1
  90. package/dist/domain/application/index.d.ts +6 -5
  91. package/dist/domain/application/index.js +1 -1
  92. package/dist/domain/application/published-data/create-finalize-admin-domain.d.ts +1 -2
  93. package/dist/domain/application/published-data/map-published-chunked-data.d.ts +1 -1
  94. package/dist/domain/application/published-data/map-published-data.d.ts +1 -2
  95. package/dist/domain/application/resolve-imported-transformers.d.ts +12 -2
  96. package/dist/domain/application/resolve-imported-transformers.js +1 -1
  97. package/dist/domain/available-system-components.js +1 -1
  98. package/dist/domain/{actions → core/action}/action-factory.d.ts +5 -4
  99. package/dist/domain/core/{action.d.ts → action/action.d.ts} +6 -7
  100. package/dist/domain/core/action/index.d.ts +3 -0
  101. package/dist/domain/core/action/index.js +1 -0
  102. package/dist/domain/{actions → core/action}/prepare-action-implementations.d.ts +1 -1
  103. package/dist/domain/core/action/prepare-action-implementations.js +5 -0
  104. package/dist/domain/{components → core/component}/component-reader-types.d.ts +1 -2
  105. package/dist/domain/{components → core/component}/debug-state-component.d.ts +1 -1
  106. package/dist/domain/core/component/debug-state-component.js +1 -0
  107. package/dist/domain/{components → core/component}/domain-component-optic.d.ts +6 -6
  108. package/dist/domain/core/component/domain-component-optic.js +16 -0
  109. package/dist/domain/{components → core/component}/drag-state-component.d.ts +1 -1
  110. package/dist/domain/core/component/drag-state-component.js +1 -0
  111. package/dist/domain/{components → core/component}/export-state-component.d.ts +1 -1
  112. package/dist/domain/core/component/export-state-component.js +1 -0
  113. package/dist/domain/{components → core/component}/fullscreen-state-component.d.ts +1 -1
  114. package/dist/domain/core/component/fullscreen-state-component.js +1 -0
  115. package/dist/domain/{components → core/component}/group-components-by-entity-id-and-name.d.ts +1 -2
  116. package/dist/domain/core/component/group-components-by-entity-id-and-name.js +1 -0
  117. package/dist/domain/{components → core/component}/hover-state-component.d.ts +1 -1
  118. package/dist/domain/core/component/hover-state-component.js +1 -0
  119. package/dist/domain/core/component/index.d.ts +18 -0
  120. package/dist/domain/core/component/index.js +1 -0
  121. package/dist/domain/{components → core/component}/legacy-filter.d.ts +2 -2
  122. package/dist/domain/{components → core/component}/navigation-state-component.d.ts +1 -1
  123. package/dist/domain/core/component/navigation-state-component.js +1 -0
  124. package/dist/domain/{components → core/component}/selection-state-component.d.ts +1 -1
  125. package/dist/domain/core/component/selection-state-component.js +1 -0
  126. package/dist/domain/{components → core/component}/system-component-builder.d.ts +1 -2
  127. package/dist/domain/core/component/system-component-builder.js +1 -0
  128. package/dist/domain/{components → core/component}/system-component-filter.d.ts +3 -3
  129. package/dist/domain/core/component/system-virtual-entity.js +1 -0
  130. package/dist/domain/{components → core/component}/tool-state-component.d.ts +1 -1
  131. package/dist/domain/core/component/tool-state-component.js +1 -0
  132. package/dist/domain/{components → core/component}/updates.d.ts +1 -2
  133. package/dist/domain/{components → core/component}/view-state-component.d.ts +1 -1
  134. package/dist/domain/core/component/view-state-component.js +1 -0
  135. package/dist/domain/{components → core/component}/viewport-state-component.d.ts +1 -1
  136. package/dist/domain/core/component/viewport-state-component.js +1 -0
  137. package/dist/domain/core/decoder/create-decoder.d.ts +6 -0
  138. package/dist/domain/core/decoder/create-decoder.js +1 -0
  139. package/dist/domain/core/decoder/decoder.d.ts +6 -0
  140. package/dist/domain/core/decoder/index.d.ts +2 -0
  141. package/dist/domain/core/decoder/index.js +1 -0
  142. package/dist/domain/core/domain-factory.d.ts +4 -5
  143. package/dist/domain/core/domain-factory.js +1 -1
  144. package/dist/domain/core/domain.d.ts +3 -4
  145. package/dist/domain/core/domain.js +1 -1
  146. package/dist/domain/core/expression/aliased-expressions.d.ts +10 -0
  147. package/dist/domain/{expressions → core/expression}/constant-expressions.d.ts +2 -3
  148. package/dist/domain/core/expression/constant-expressions.js +1 -0
  149. package/dist/domain/{expressions → core/expression}/custom-expression.d.ts +4 -5
  150. package/dist/domain/core/expression/custom-expression.js +1 -0
  151. package/dist/domain/core/{expression.d.ts → expression/expression.d.ts} +6 -8
  152. package/dist/domain/core/expression/index.d.ts +6 -0
  153. package/dist/domain/core/expression/index.js +1 -0
  154. package/dist/domain/{expressions → core/expression}/memoize-expression.d.ts +2 -2
  155. package/dist/domain/{expressions → core/expression}/prepare-domain-expressions.d.ts +1 -1
  156. package/dist/domain/core/index.d.ts +11 -17
  157. package/dist/domain/core/index.js +1 -1
  158. package/dist/domain/{invariants → core/invariant}/builtin-invariant.d.ts +2 -2
  159. package/dist/domain/{invariants → core/invariant}/custom-invariants.d.ts +2 -3
  160. package/dist/domain/core/invariant/custom-invariants.js +1 -0
  161. package/dist/domain/core/invariant/index.d.ts +5 -0
  162. package/dist/domain/core/invariant/index.js +1 -0
  163. package/dist/domain/{invariants → core/invariant}/invariants.d.ts +12 -4
  164. package/dist/domain/core/invariant/invariants.js +1 -0
  165. package/dist/domain/core/invariant/violation-component.js +1 -0
  166. package/dist/domain/{invariants → core/invariant}/violation.d.ts +2 -2
  167. package/dist/domain/core/{component.d.ts → model/component.d.ts} +1 -1
  168. package/dist/domain/core/model/index.d.ts +6 -0
  169. package/dist/domain/core/model/index.js +1 -0
  170. package/dist/domain/core/{reflection.d.ts → model/reflection.d.ts} +1 -1
  171. package/dist/domain/core/model/reflection.js +1 -0
  172. package/dist/domain/core/recipe/index.d.ts +1 -0
  173. package/dist/domain/core/recipe/index.js +1 -0
  174. package/dist/domain/{domain-context/recipe-system → core/recipe}/recipes.d.ts +1 -3
  175. package/dist/domain/core/recipe/recipes.js +1 -0
  176. package/dist/domain/{relations → core/relation}/all-of-type-relation.d.ts +3 -4
  177. package/dist/domain/core/relation/all-of-type-relation.js +1 -0
  178. package/dist/domain/{relations → core/relation}/component-factories.d.ts +1 -2
  179. package/dist/domain/core/relation/component-factories.js +1 -0
  180. package/dist/domain/{relations → core/relation}/composed-of.d.ts +1 -1
  181. package/dist/domain/core/relation/composed-of.js +1 -0
  182. package/dist/domain/{relations → core/relation}/direct-relation.d.ts +2 -3
  183. package/dist/domain/core/relation/index.d.ts +9 -0
  184. package/dist/domain/core/relation/index.js +1 -0
  185. package/dist/domain/{relations → core/relation}/indirect-relation.d.ts +3 -4
  186. package/dist/domain/core/relation/indirect-relation.js +1 -0
  187. package/dist/domain/{relations → core/relation}/reference-component.d.ts +4 -5
  188. package/dist/domain/core/relation/reference-component.js +1 -0
  189. package/dist/domain/{relations → core/relation}/reference-field.d.ts +1 -1
  190. package/dist/domain/core/relation/reference-field.js +1 -0
  191. package/dist/domain/{relations → core/relation}/relation-factory.d.ts +2 -3
  192. package/dist/domain/{relations → core/relation}/relation-implementation.d.ts +3 -4
  193. package/dist/domain/core/relation/relation-implementation.js +1 -0
  194. package/dist/domain/core/schema/enhanced-json-schema.js +1 -0
  195. package/dist/domain/core/schema/extended-schema-validator.js +1 -0
  196. package/dist/domain/core/schema/index.d.ts +3 -0
  197. package/dist/domain/core/schema/index.js +1 -0
  198. package/dist/domain/core/schema/schema-validator.js +1 -0
  199. package/dist/domain/core/state/id-sequence.d.ts +15 -0
  200. package/dist/domain/core/state/id-sequence.js +1 -0
  201. package/dist/domain/core/state/index.d.ts +3 -0
  202. package/dist/domain/core/state/index.js +1 -0
  203. package/dist/domain/core/{migrations.d.ts → state/migrations.d.ts} +1 -2
  204. package/dist/domain/core/{state.d.ts → state/state.d.ts} +1 -2
  205. package/dist/domain/domain-builder.d.ts +11 -11
  206. package/dist/domain/domain-builder.js +1 -1
  207. package/dist/domain/domain-context/action-system/action-system.d.ts +1 -3
  208. package/dist/domain/domain-context/action-system/action-system.js +1 -1
  209. package/dist/domain/domain-context/create-transformer.d.ts +1 -1
  210. package/dist/domain/domain-context/dimension-system/dimension-state.js +1 -1
  211. package/dist/domain/domain-context/dimension-system/dimension-system.d.ts +1 -2
  212. package/dist/domain/domain-context/domain-context-systems.d.ts +1 -3
  213. package/dist/domain/domain-context/index.d.ts +1 -2
  214. package/dist/domain/domain-context/index.js +1 -1
  215. package/dist/domain/domain-context/navigation-system/navigation-system.d.ts +3 -5
  216. package/dist/domain/domain-context/navigation-system/navigation-system.js +1 -1
  217. package/dist/domain/domain-context/navigation-system/navigation-updates.d.ts +1 -12
  218. package/dist/domain/domain-context/navigation-system/navigation-updates.js +1 -1
  219. package/dist/domain/domain-context/navigation-system/selection-transformers.d.ts +1 -1
  220. package/dist/domain/domain-context/navigation-system/selection-transformers.js +1 -1
  221. package/dist/domain/domain-context/recipe-system/recipe-cooker-system.d.ts +1 -3
  222. package/dist/domain/domain-context/recipe-system/recipe-cooker-system.js +1 -1
  223. package/dist/domain/domain-context/relation-transformers/cascade-deletes.d.ts +1 -1
  224. package/dist/domain/domain-context/relation-transformers/cascade-deletes.js +1 -1
  225. package/dist/domain/domain-context/relation-transformers/cascade-ref-pruning.d.ts +1 -1
  226. package/dist/domain/domain-context/relation-transformers/cascade-ref-pruning.js +1 -1
  227. package/dist/domain/domain-context/relation-transformers/create-entity-refs.d.ts +1 -1
  228. package/dist/domain/domain-context/relation-transformers/create-entity-refs.js +2 -2
  229. package/dist/domain/domain-context/relation-transformers/replace-refs.d.ts +1 -1
  230. package/dist/domain/domain-context/relation-transformers/replace-refs.js +1 -1
  231. package/dist/domain/domain-context/store-system/apply-updates.d.ts +1 -3
  232. package/dist/domain/domain-context/store-system/apply-updates.js +1 -1
  233. package/dist/domain/domain-context/store-system/next-domain-entity-id.d.ts +1 -13
  234. package/dist/domain/domain-context/store-system/next-domain-entity-id.js +1 -1
  235. package/dist/domain/domain-context/store-system/reconcile-projected-entities.d.ts +1 -2
  236. package/dist/domain/domain-context/store-system/reconcile-projected-entities.js +1 -1
  237. package/dist/domain/domain-context/store-system/store-system.d.ts +1 -5
  238. package/dist/domain/domain-context/store-system/store-system.js +2 -2
  239. package/dist/domain/domain-context/store-system/system-state.d.ts +1 -3
  240. package/dist/domain/domain-context/store-system/system-state.js +1 -1
  241. package/dist/domain/domain-context/transformers/actions-builder.d.ts +1 -2
  242. package/dist/domain/domain-context/transformers/actions-builder.js +1 -1
  243. package/dist/domain/domain-context/transformers/auto-snap-transformer.d.ts +1 -3
  244. package/dist/domain/domain-context/transformers/chain-builder.d.ts +2 -2
  245. package/dist/domain/domain-context/transformers/context.d.ts +1 -5
  246. package/dist/domain/domain-context/transformers/entity-builder.d.ts +1 -5
  247. package/dist/domain/domain-context/transformers/entity-builder.js +1 -1
  248. package/dist/domain/domain-context/transformers/then-builder.d.ts +1 -2
  249. package/dist/domain/domain-context/transformers/then-builder.js +1 -1
  250. package/dist/domain/domain-context/transformers/when-builder.d.ts +1 -6
  251. package/dist/domain/domain-context/transformers/when-builder.js +1 -1
  252. package/dist/domain/domain-context/undo-system.d.ts +1 -1
  253. package/dist/domain/domain-runtime/domain-context/component-reader.d.ts +1 -4
  254. package/dist/domain/domain-runtime/domain-context/component-reader.js +1 -1
  255. package/dist/domain/domain-runtime/domain-context/selectors.d.ts +1 -3
  256. package/dist/domain/domain-runtime/domain-context/selectors.js +1 -1
  257. package/dist/domain/domain-runtime/domain-runtime.d.ts +4 -4
  258. package/dist/domain/domain-runtime/spec/initialize.js +1 -1
  259. package/dist/domain/domain-runtime/spec/selectors.d.ts +2 -2
  260. package/dist/domain/domain-runtime/spec/selectors.js +1 -1
  261. package/dist/domain/domain-runtime/spec/types.d.ts +4 -5
  262. package/dist/domain/index.d.ts +2 -32
  263. package/dist/domain/index.js +1 -1
  264. package/dist/domain/mocks/create-mock-domain-runtime.d.ts +3 -3
  265. package/dist/domain/mocks/create-mock-domain-runtime.js +1 -1
  266. package/dist/domain/project-modules/index.d.ts +1 -0
  267. package/dist/domain/project-modules/index.js +1 -0
  268. package/dist/domain/project-modules/project-modules.d.ts +41 -0
  269. package/dist/domain/project-modules/project-modules.js +1 -0
  270. package/dist/domain/projections/blender-projections/blender-projections.d.ts +1 -1
  271. package/dist/domain/projections/blender-projections/blender-projections.js +1 -1
  272. package/dist/domain/projections/composition-projections.js +1 -1
  273. package/dist/domain/projections/projected-entities-projections.d.ts +1 -2
  274. package/dist/domain/projections/snap-matching.d.ts +1 -2
  275. package/dist/domain/projections/snap-utils.d.ts +1 -2
  276. package/dist/domain/projections/validation-projections.d.ts +1 -2
  277. package/dist/domain/projections/validation-projections.js +1 -1
  278. package/dist/domain/system-components/admin-sidebar.d.ts +1 -1
  279. package/dist/domain/system-components/admin-sidebar.js +1 -1
  280. package/dist/domain/system-components/angle-dimension.js +1 -1
  281. package/dist/domain/system-components/angle-indicator.d.ts +1 -1
  282. package/dist/domain/system-components/angle-indicator.js +1 -1
  283. package/dist/domain/system-components/application-config.d.ts +1 -1
  284. package/dist/domain/system-components/application-config.js +1 -1
  285. package/dist/domain/system-components/attribute-selection.js +1 -1
  286. package/dist/domain/system-components/attribute-switch.js +1 -1
  287. package/dist/domain/system-components/autorotate-camera-component.d.ts +1 -1
  288. package/dist/domain/system-components/autorotate-camera-component.js +1 -1
  289. package/dist/domain/system-components/basic-sidebar-footer.d.ts +1 -1
  290. package/dist/domain/system-components/basic-sidebar-footer.js +1 -1
  291. package/dist/domain/system-components/bounding-box-component.d.ts +1 -1
  292. package/dist/domain/system-components/bounding-box-component.js +1 -1
  293. package/dist/domain/system-components/bounding-sphere-component.d.ts +1 -1
  294. package/dist/domain/system-components/bounding-sphere-component.js +1 -1
  295. package/dist/domain/system-components/camera-based-hidden-entity-object.js +1 -1
  296. package/dist/domain/system-components/camera-based-hidden-entity.js +1 -1
  297. package/dist/domain/system-components/canvas-config.d.ts +1 -1
  298. package/dist/domain/system-components/canvas-config.js +1 -1
  299. package/dist/domain/system-components/canvas-custom-environment.js +1 -1
  300. package/dist/domain/system-components/canvas-padding.d.ts +1 -1
  301. package/dist/domain/system-components/canvas-padding.js +1 -1
  302. package/dist/domain/system-components/canvas-preset-environment.d.ts +1 -1
  303. package/dist/domain/system-components/canvas-preset-environment.js +1 -1
  304. package/dist/domain/system-components/child-entity-recipe-hierarchy.d.ts +1 -1
  305. package/dist/domain/system-components/child-entity-recipe-hierarchy.js +1 -1
  306. package/dist/domain/system-components/child-entity-recipes.d.ts +1 -1
  307. package/dist/domain/system-components/child-entity-recipes.js +1 -1
  308. package/dist/domain/system-components/child-entity-selection.d.ts +1 -2
  309. package/dist/domain/system-components/child-entity-selection.js +1 -1
  310. package/dist/domain/system-components/client-side-image.js +1 -1
  311. package/dist/domain/system-components/collision-box-geometry.d.ts +1 -1
  312. package/dist/domain/system-components/collision-box-geometry.js +1 -1
  313. package/dist/domain/system-components/collision-geometries.d.ts +1 -1
  314. package/dist/domain/system-components/collision-geometry.d.ts +1 -1
  315. package/dist/domain/system-components/collision-geometry.js +1 -1
  316. package/dist/domain/system-components/collision-point-geometry.d.ts +1 -1
  317. package/dist/domain/system-components/collision-point-geometry.js +1 -1
  318. package/dist/domain/system-components/color-value.js +1 -1
  319. package/dist/domain/system-components/common/dimension-indicator-schema.d.ts +1 -1
  320. package/dist/domain/system-components/common/dimension-indicator-schema.js +1 -1
  321. package/dist/domain/system-components/common/recipes.d.ts +1 -2
  322. package/dist/domain/system-components/constraint.d.ts +1 -1
  323. package/dist/domain/system-components/constraint.js +1 -1
  324. package/dist/domain/system-components/create-blueprint.d.ts +1 -1
  325. package/dist/domain/system-components/custom-header.d.ts +1 -1
  326. package/dist/domain/system-components/custom-header.js +1 -1
  327. package/dist/domain/system-components/custom-price-footer.js +1 -1
  328. package/dist/domain/system-components/custom-scene-entity.d.ts +1 -1
  329. package/dist/domain/system-components/custom-scene-entity.js +1 -1
  330. package/dist/domain/system-components/custom-sidebar-footer.d.ts +1 -1
  331. package/dist/domain/system-components/custom-sidebar-footer.js +1 -1
  332. package/dist/domain/system-components/detail.js +1 -1
  333. package/dist/domain/system-components/dimension-indicator.d.ts +1 -1
  334. package/dist/domain/system-components/dimension-indicator.js +1 -1
  335. package/dist/domain/system-components/distance-dimension-select.d.ts +1 -1
  336. package/dist/domain/system-components/distance-dimension-select.js +1 -1
  337. package/dist/domain/system-components/distance-dimension.d.ts +1 -1
  338. package/dist/domain/system-components/distance-dimension.js +1 -1
  339. package/dist/domain/system-components/drag-handle.d.ts +1 -1
  340. package/dist/domain/system-components/drag-handle.js +1 -1
  341. package/dist/domain/system-components/editable-angle-indicator.d.ts +1 -1
  342. package/dist/domain/system-components/editable-angle-indicator.js +1 -1
  343. package/dist/domain/system-components/editable-distance-dimension-indicator.d.ts +1 -1
  344. package/dist/domain/system-components/editable-distance-dimension-indicator.js +1 -1
  345. package/dist/domain/system-components/editable-offset-indicator.d.ts +1 -1
  346. package/dist/domain/system-components/editable-offset-indicator.js +1 -1
  347. package/dist/domain/system-components/editable-size-indicator.d.ts +1 -1
  348. package/dist/domain/system-components/editable-size-indicator.js +1 -1
  349. package/dist/domain/system-components/entity-header.js +1 -1
  350. package/dist/domain/system-components/exit-tool-mode-fab.d.ts +1 -1
  351. package/dist/domain/system-components/exit-tool-mode-fab.js +1 -1
  352. package/dist/domain/system-components/finalize-action.d.ts +1 -1
  353. package/dist/domain/system-components/finalize-action.js +1 -1
  354. package/dist/domain/system-components/finalize-component.js +1 -1
  355. package/dist/domain/system-components/fit-entity-orthographic-camera-component.js +1 -1
  356. package/dist/domain/system-components/fit-entity-perspective-camera-component.js +1 -1
  357. package/dist/domain/system-components/fit-root-orthographic-camera-component.js +1 -1
  358. package/dist/domain/system-components/fit-root-perspective-camera-component.js +1 -1
  359. package/dist/domain/system-components/fit-selection-orthographic-camera-component.js +1 -1
  360. package/dist/domain/system-components/fit-selection-perspective-camera-component.js +1 -1
  361. package/dist/domain/system-components/fixed-header.d.ts +1 -1
  362. package/dist/domain/system-components/fixed-header.js +1 -1
  363. package/dist/domain/system-components/floating-header.d.ts +1 -1
  364. package/dist/domain/system-components/floating-header.js +1 -1
  365. package/dist/domain/system-components/generic-dimension.d.ts +1 -1
  366. package/dist/domain/system-components/generic-dimension.js +1 -1
  367. package/dist/domain/system-components/hidden-entity.js +1 -1
  368. package/dist/domain/system-components/hidden-header.d.ts +1 -1
  369. package/dist/domain/system-components/hidden-header.js +1 -1
  370. package/dist/domain/system-components/hidden-sidebar-footer.d.ts +1 -1
  371. package/dist/domain/system-components/hidden-sidebar-footer.js +1 -1
  372. package/dist/domain/system-components/horizontal-tabs.d.ts +1 -1
  373. package/dist/domain/system-components/horizontal-tabs.js +1 -1
  374. package/dist/domain/system-components/hotspot-drag-handle.d.ts +1 -2
  375. package/dist/domain/system-components/hotspot-drag-handle.js +1 -1
  376. package/dist/domain/system-components/list-selector-dimension-indicator.d.ts +1 -1
  377. package/dist/domain/system-components/list-selector-dimension-indicator.js +1 -1
  378. package/dist/domain/system-components/material-override-property-transition.js +1 -1
  379. package/dist/domain/system-components/material-override-transformer.js +1 -1
  380. package/dist/domain/system-components/material-swatch.js +1 -1
  381. package/dist/domain/system-components/multilingual-text-value.js +1 -1
  382. package/dist/domain/system-components/navigation-page.js +1 -1
  383. package/dist/domain/system-components/navigation-panel-list.js +1 -1
  384. package/dist/domain/system-components/navigation-steps.js +1 -1
  385. package/dist/domain/system-components/offset-anchors.d.ts +1 -1
  386. package/dist/domain/system-components/offset-anchors.js +1 -1
  387. package/dist/domain/system-components/offset-indicator.d.ts +1 -2
  388. package/dist/domain/system-components/offset-indicator.js +1 -1
  389. package/dist/domain/system-components/offset.d.ts +1 -1
  390. package/dist/domain/system-components/offset.js +1 -1
  391. package/dist/domain/system-components/other-action.d.ts +1 -1
  392. package/dist/domain/system-components/other-action.js +1 -1
  393. package/dist/domain/system-components/pivot-point.d.ts +1 -1
  394. package/dist/domain/system-components/pivot-point.js +1 -1
  395. package/dist/domain/system-components/price.js +1 -1
  396. package/dist/domain/system-components/projected-entities.d.ts +1 -1
  397. package/dist/domain/system-components/projected-entities.js +1 -1
  398. package/dist/domain/system-components/property-page.d.ts +1 -1
  399. package/dist/domain/system-components/property-page.js +1 -1
  400. package/dist/domain/system-components/read-sidebar-footer.d.ts +1 -1
  401. package/dist/domain/system-components/read-sidebar-footer.js +1 -1
  402. package/dist/domain/system-components/replace-entity-recipe-hierarchy.d.ts +1 -1
  403. package/dist/domain/system-components/replace-entity-recipe-hierarchy.js +1 -1
  404. package/dist/domain/system-components/replace-entity-recipes.d.ts +1 -1
  405. package/dist/domain/system-components/replace-entity-recipes.js +1 -1
  406. package/dist/domain/system-components/rotatable.js +1 -1
  407. package/dist/domain/system-components/rotation-handle.js +1 -1
  408. package/dist/domain/system-components/save-template-thumbnail.js +1 -1
  409. package/dist/domain/system-components/scene-entity-add-fab.js +1 -1
  410. package/dist/domain/system-components/scene-entity-ambient-light.js +1 -1
  411. package/dist/domain/system-components/scene-entity-animation.js +1 -1
  412. package/dist/domain/system-components/scene-entity-box-object.js +1 -1
  413. package/dist/domain/system-components/scene-entity-control.js +1 -1
  414. package/dist/domain/system-components/scene-entity-delete-fab.js +1 -1
  415. package/dist/domain/system-components/scene-entity-directional-light.js +1 -1
  416. package/dist/domain/system-components/scene-entity-floor-object.js +1 -1
  417. package/dist/domain/system-components/scene-entity-html-hotspot.js +1 -1
  418. package/dist/domain/system-components/scene-entity-local-material-override.js +1 -1
  419. package/dist/domain/system-components/scene-entity-material-override.js +1 -1
  420. package/dist/domain/system-components/scene-entity-navigation-hotspot.js +1 -1
  421. package/dist/domain/system-components/scene-entity-object-clip.js +1 -1
  422. package/dist/domain/system-components/scene-entity-object-decal.js +1 -1
  423. package/dist/domain/system-components/scene-entity-object-group.js +1 -1
  424. package/dist/domain/system-components/scene-entity-object-html-hotspot.js +1 -1
  425. package/dist/domain/system-components/scene-entity-object-local-material-override.js +1 -1
  426. package/dist/domain/system-components/scene-entity-object-material-override.js +1 -1
  427. package/dist/domain/system-components/scene-entity-object-properties.js +1 -1
  428. package/dist/domain/system-components/scene-entity-object-remote-material-override.js +1 -1
  429. package/dist/domain/system-components/scene-entity-object-text-decal.js +1 -1
  430. package/dist/domain/system-components/scene-entity-object-transformer.js +1 -1
  431. package/dist/domain/system-components/scene-entity-object-transimissive-material-override.js +1 -1
  432. package/dist/domain/system-components/scene-entity-object.js +1 -1
  433. package/dist/domain/system-components/scene-entity-point-light.js +1 -1
  434. package/dist/domain/system-components/scene-entity-properties.js +1 -1
  435. package/dist/domain/system-components/scene-entity-rect-area-light.js +1 -1
  436. package/dist/domain/system-components/scene-entity-remote-material-override.js +1 -1
  437. package/dist/domain/system-components/scene-entity-remote-object.js +1 -1
  438. package/dist/domain/system-components/scene-entity-select-hotspot.js +1 -1
  439. package/dist/domain/system-components/scene-entity-spot-light.js +1 -1
  440. package/dist/domain/system-components/scene-entity-transimissive-material-override.js +1 -1
  441. package/dist/domain/system-components/scene-entity-wall-object.js +1 -1
  442. package/dist/domain/system-components/selectable-component.js +1 -1
  443. package/dist/domain/system-components/sidebar-tabs.d.ts +1 -1
  444. package/dist/domain/system-components/sidebar-tabs.js +1 -1
  445. package/dist/domain/system-components/simple-summary.js +1 -1
  446. package/dist/domain/system-components/size.d.ts +1 -1
  447. package/dist/domain/system-components/size.js +1 -1
  448. package/dist/domain/system-components/sketching-draw.d.ts +1 -1
  449. package/dist/domain/system-components/sketching-draw.js +1 -1
  450. package/dist/domain/system-components/sketching-edit.d.ts +1 -1
  451. package/dist/domain/system-components/sketching-edit.js +1 -1
  452. package/dist/domain/system-components/sketching-line.d.ts +1 -1
  453. package/dist/domain/system-components/sketching-line.js +1 -1
  454. package/dist/domain/system-components/sketching-rectangle.d.ts +1 -1
  455. package/dist/domain/system-components/sketching-rectangle.js +1 -1
  456. package/dist/domain/system-components/sketching.d.ts +1 -1
  457. package/dist/domain/system-components/sketching.js +1 -1
  458. package/dist/domain/system-components/snap-axis.d.ts +1 -1
  459. package/dist/domain/system-components/snap-axis.js +1 -1
  460. package/dist/domain/system-components/snap-edge.d.ts +1 -1
  461. package/dist/domain/system-components/snap-edge.js +1 -1
  462. package/dist/domain/system-components/snap-plane.d.ts +1 -1
  463. package/dist/domain/system-components/snap-plane.js +1 -1
  464. package/dist/domain/system-components/snap-point.d.ts +1 -1
  465. package/dist/domain/system-components/snap-point.js +1 -1
  466. package/dist/domain/system-components/static-orthographic-camera-component.d.ts +1 -1
  467. package/dist/domain/system-components/static-orthographic-camera-component.js +1 -1
  468. package/dist/domain/system-components/static-perspective-camera-component.d.ts +1 -1
  469. package/dist/domain/system-components/static-perspective-camera-component.js +1 -1
  470. package/dist/domain/system-components/summary-component.js +1 -1
  471. package/dist/domain/system-components/text-value.js +1 -1
  472. package/dist/domain/system-components/tool-controls.js +1 -1
  473. package/dist/domain/system-components/tool-menu-fab.d.ts +1 -1
  474. package/dist/domain/system-components/tool-menu-fab.js +1 -1
  475. package/dist/domain/system-components/toolbar.d.ts +1 -1
  476. package/dist/domain/system-components/toolbar.js +1 -1
  477. package/dist/domain/system-components/universal-sidebar-footer.d.ts +1 -1
  478. package/dist/domain/system-components/universal-sidebar-footer.js +1 -1
  479. package/dist/domain/system-components/view-controls.js +1 -1
  480. package/dist/domain/utils/eval-cache.d.ts +1 -2
  481. package/dist/domain/utils/memo-eval.d.ts +1 -3
  482. package/dist/editor/domain-editors/use-implementation-files.d.ts +7 -6
  483. package/dist/editor/domain-editors/use-implementation-files.js +1 -1
  484. package/dist/i18n/locales/cs/messages.js +1 -1
  485. package/dist/i18n/locales/da/messages.js +1 -1
  486. package/dist/i18n/locales/de/messages.js +1 -1
  487. package/dist/i18n/locales/de-AT/messages.js +1 -1
  488. package/dist/i18n/locales/en/messages.js +1 -1
  489. package/dist/i18n/locales/en-AU/messages.js +1 -1
  490. package/dist/i18n/locales/en-GB/messages.js +1 -1
  491. package/dist/i18n/locales/es/messages.js +1 -1
  492. package/dist/i18n/locales/fr/messages.js +1 -1
  493. package/dist/i18n/locales/hu/messages.js +1 -1
  494. package/dist/i18n/locales/it/messages.js +1 -1
  495. package/dist/i18n/locales/nl/messages.js +1 -1
  496. package/dist/i18n/locales/pl/messages.js +1 -1
  497. package/dist/i18n/locales/pt/messages.js +1 -1
  498. package/dist/i18n/locales/ro/messages.js +1 -1
  499. package/dist/i18n/locales/sk/messages.js +1 -1
  500. package/dist/i18n/locales/tr/messages.js +1 -1
  501. package/dist/legacy/domain-cli/gen/configurator-builder.js +21 -8
  502. package/dist/legacy/domain-cli/utils/cache.d.ts +1 -1
  503. package/dist/legacy/domain-cli/utils/cache.js +1 -1
  504. package/dist/legacy/phoenix-cli/project-gen/generators/file-templates/frontend-admin.js +18 -19
  505. package/dist/legacy/phoenix-cli/project-gen/generators/file-templates/frontend-configurator.js +15 -16
  506. package/dist/legacy/phoenix-cli/project-gen/generators/file-templates/frontend-embedded-admin.js +22 -23
  507. package/dist/legacy/phoenix-cli/project-gen/generators/file-templates/frontend-embedded-configurator.js +15 -16
  508. package/dist/legacy/phoenix-cli/project-gen/generators/file-templates/generator-shared.d.ts +7 -2
  509. package/dist/legacy/phoenix-cli/project-gen/generators/file-templates/generator-shared.js +8 -12
  510. package/dist/legacy/phoenix-cli/project-gen/generators/file-templates/index.d.ts +1 -1
  511. package/dist/legacy/phoenix-cli/project-gen/generators/file-templates/index.js +1 -1
  512. package/dist/legacy/phoenix-cli/project-gen/generators/file-templates/webhook-builders.js +7 -7
  513. package/dist/phoenix/application-spec/resolve-deployment-data.d.ts +4 -3
  514. package/dist/phoenix/application-spec/resolve-deployment-data.js +2 -2
  515. package/dist/phoenix/commands/prepare-deployment-command.js +2 -2
  516. package/dist/phoenix/commands/prepare-local-environment-command.js +1 -1
  517. package/dist/phoenix/scripts/build-admin.js +1 -1
  518. package/dist/phoenix/services/prepare-development-environment.js +1 -1
  519. package/dist/phoenix/services/variant-file-session.js +1 -1
  520. package/dist/react-sdk/application-runtime/hooks/use-domain-application-props.d.ts +5 -2
  521. package/dist/react-sdk/application-runtime/hooks/use-spec.d.ts +1 -1
  522. package/dist/react-sdk/application-runtime/mocks/create-mock-application-runtime.d.ts +1 -1
  523. package/dist/react-sdk/application-runtime/mocks/create-mock-application-runtime.js +1 -1
  524. package/dist/react-sdk/application-runtime/runtime/create-application-runtime.d.ts +4 -4
  525. package/dist/webhook/builders/common.d.ts +3 -0
  526. package/dist/webhook/builders/webhook-builder.d.ts +1 -1
  527. package/dist/webhook/builders/webhook-builder.js +1 -1
  528. package/package.json +3 -3
  529. package/dist/domain/actions/prepare-action-implementations.js +0 -5
  530. package/dist/domain/components/debug-state-component.js +0 -1
  531. package/dist/domain/components/domain-component-optic.js +0 -16
  532. package/dist/domain/components/drag-state-component.js +0 -1
  533. package/dist/domain/components/export-state-component.js +0 -1
  534. package/dist/domain/components/fullscreen-state-component.js +0 -1
  535. package/dist/domain/components/group-components-by-entity-id-and-name.js +0 -1
  536. package/dist/domain/components/hover-state-component.js +0 -1
  537. package/dist/domain/components/index.d.ts +0 -2
  538. package/dist/domain/components/index.js +0 -1
  539. package/dist/domain/components/navigation-state-component.js +0 -1
  540. package/dist/domain/components/selection-state-component.js +0 -1
  541. package/dist/domain/components/system-component-builder.js +0 -1
  542. package/dist/domain/components/system-virtual-entity.js +0 -1
  543. package/dist/domain/components/tool-state-component.js +0 -1
  544. package/dist/domain/components/view-state-component.js +0 -1
  545. package/dist/domain/components/viewport-state-component.js +0 -1
  546. package/dist/domain/core/json-schema.js +0 -1
  547. package/dist/domain/core/reflection.js +0 -1
  548. package/dist/domain/domain-context/recipe-system/recipes.js +0 -1
  549. package/dist/domain/expressions/constant-expressions.js +0 -1
  550. package/dist/domain/expressions/custom-expression.js +0 -1
  551. package/dist/domain/expressions/index.d.ts +0 -1
  552. package/dist/domain/expressions/index.js +0 -1
  553. package/dist/domain/invariants/custom-invariants.js +0 -1
  554. package/dist/domain/invariants/invariants.js +0 -1
  555. package/dist/domain/invariants/violation-component.js +0 -1
  556. package/dist/domain/relations/all-of-type-relation.js +0 -1
  557. package/dist/domain/relations/component-factories.js +0 -1
  558. package/dist/domain/relations/composed-of.js +0 -1
  559. package/dist/domain/relations/indirect-relation.js +0 -1
  560. package/dist/domain/relations/reference-component.js +0 -1
  561. package/dist/phoenix/application-spec/generate-assistant-prompt.d.ts +0 -13
  562. package/dist/phoenix/application-spec/generate-assistant-prompt.js +0 -1
  563. /package/dist/domain/{components/component-reader-types.js → application/assistant/assistant-manifest.js} +0 -0
  564. /package/dist/domain/{core/action.js → application/assistant/assistant-resolved-manifest.js} +0 -0
  565. /package/dist/domain/{actions → core/action}/action-factory.js +0 -0
  566. /package/dist/domain/core/{enhanced-json-schema.js → action/action.js} +0 -0
  567. /package/dist/domain/core/{expression.js → component/component-reader-types.js} +0 -0
  568. /package/dist/domain/{components → core/component}/legacy-filter.js +0 -0
  569. /package/dist/domain/{components → core/component}/system-component-filter.js +0 -0
  570. /package/dist/domain/{components → core/component}/system-virtual-entity.d.ts +0 -0
  571. /package/dist/domain/{components → core/component}/updates.js +0 -0
  572. /package/dist/domain/core/{schema-validator.js → decoder/decoder.js} +0 -0
  573. /package/dist/domain/{relations/reference-field.js → core/expression/aliased-expressions.js} +0 -0
  574. /package/dist/domain/{relations/relation-implementation.js → core/expression/expression.js} +0 -0
  575. /package/dist/domain/{expressions → core/expression}/memoize-expression.js +0 -0
  576. /package/dist/domain/{expressions → core/expression}/prepare-domain-expressions.js +0 -0
  577. /package/dist/domain/{invariants → core/invariant}/builtin-invariant.js +0 -0
  578. /package/dist/domain/{invariants → core/invariant}/violation-component.d.ts +0 -0
  579. /package/dist/domain/{invariants → core/invariant}/violation.js +0 -0
  580. /package/dist/domain/core/{alias.d.ts → model/alias.d.ts} +0 -0
  581. /package/dist/domain/core/{alias.js → model/alias.js} +0 -0
  582. /package/dist/domain/core/{common-definitions.d.ts → model/common-definitions.d.ts} +0 -0
  583. /package/dist/domain/core/{common-definitions.js → model/common-definitions.js} +0 -0
  584. /package/dist/domain/core/{component.js → model/component.js} +0 -0
  585. /package/dist/domain/core/{model.d.ts → model/model.d.ts} +0 -0
  586. /package/dist/domain/core/{model.js → model/model.js} +0 -0
  587. /package/dist/domain/core/{preset.d.ts → model/preset.d.ts} +0 -0
  588. /package/dist/domain/core/{preset.js → model/preset.js} +0 -0
  589. /package/dist/domain/{relations → core/relation}/direct-relation.js +0 -0
  590. /package/dist/domain/{relations → core/relation}/relation-factory.js +0 -0
  591. /package/dist/domain/core/{schema-validator-ajv.d.ts → schema/create-ajv-schema-validator.d.ts} +0 -0
  592. /package/dist/domain/core/{schema-validator-ajv.js → schema/create-ajv-schema-validator.js} +0 -0
  593. /package/dist/domain/core/{schema-validator-csp.d.ts → schema/create-csp-schema-validator.d.ts} +0 -0
  594. /package/dist/domain/core/{schema-validator-csp.js → schema/create-csp-schema-validator.js} +0 -0
  595. /package/dist/domain/core/{enhanced-json-schema.d.ts → schema/enhanced-json-schema.d.ts} +0 -0
  596. /package/dist/domain/core/{json-schema.d.ts → schema/extended-schema-validator.d.ts} +0 -0
  597. /package/dist/domain/core/{schema-validator.d.ts → schema/schema-validator.d.ts} +0 -0
  598. /package/dist/domain/core/{migrations.js → state/migrations.js} +0 -0
  599. /package/dist/domain/core/{state.js → state/state.js} +0 -0
@@ -1 +1 @@
1
- import{getComponentSystemFilterState as e,isComponentActive as n}from"../../components/system-component-filter.js";import{domainEntityTypeFromId as t,isDomainEntityId as o}from"../../core/model.js";let i=class InternalFilter{componentTypes;entityIds;instanceNames;constructor(e){"entityId"in e&&void 0!==e.entityId&&(this.entityIds=new Set([e.entityId])),"entityIds"in e&&void 0!==e.entityIds&&(this.entityIds=new Set(e.entityIds)),"instanceName"in e&&void 0!==e.instanceName&&(this.instanceNames=new Set([e.instanceName])),"instanceNames"in e&&void 0!==e.instanceNames&&(this.instanceNames=new Set(e.instanceNames)),"componentType"in e&&void 0!==e.componentType&&(this.componentTypes=new Set([e.componentType])),"componentTypes"in e&&void 0!==e.componentTypes&&(this.componentTypes=new Set(e.componentTypes))}toString(){let e=this.instanceNames&&Array.from(this.instanceNames).join(", "),n=this.componentTypes&&Array.from(this.componentTypes).map(e=>e.name).join(", "),t=this.entityIds&&Array.from(this.entityIds).map(e=>`#${String(e)}`).join(", ");return[e?`instance ${e} of`:void 0,n?`component ${n}`:void 0,t?`on entity ${t}`:void 0].filter(Boolean).join(" ")}},s=new WeakMap;export class ComponentReader{_context;constructor(e){this._context=e}_resolveDynamicInstanceName=(e,n,t,o)=>{let i=o.dynamicInstanceNames.get(e)?.get(n);if(!i)return null;for(let e of i)if(t.startsWith(`${e}_`))return e;return null};_readComponents(i,a,c,m=!1){let p=e(a),r=this._context.selectors.getExpressionContext(),l=this._context.selectors.getComponentReaderIndexes(),d=[],y=void 0!==i.entityIds?[]:void 0;if(void 0!==i.entityIds)for(let e of i.entityIds)o(e)&&y?.push(e);if(void 0===y||y.length>0){let e=y??a.entities,o=void 0!==y?new Map:void 0;for(let y of e){let e="string"==typeof y?y:y.id;if(void 0!==o){if(o.has(e))continue;o.set(e,!0)}let f="string"==typeof y?t(e):y.type;for(let t of i.componentTypes??l.allComponentTypes.get(f)??[])for(let o of i.instanceNames??l.allComponentInstanceNames.get(f)?.get(t)??[]){let i=l.opticMap.get(f)?.get(t)?.get(o),y=i?null:this._resolveDynamicInstanceName(f,t,o,l),h=y?l.opticMap.get(f)?.get(t)?.get(y):void 0,I=i??h;if(!I)continue;let u=0===I.navigationFilters.length||n(p,I.navigationFilters,e,a,r,m);if(!0!==u){m&&d.push({componentInstance:{componentType:t,entityId:e,instanceName:o},filteredOut:!0,filterState:p,filterContext:{mode:r.mode,role:r.role},mismatchReasons:u});continue}if("simple"===I.kind){let n=I.read(e,a,r),t=s.get(n);if(!t||t.componentInstance.entityId!==e||t.componentInstance.componentType!==I.componentType||t.componentInstance.instanceName!==I.instanceName){let o={state:n,componentInstance:{componentType:I.componentType,entityId:e,instanceName:I.instanceName}};s.set(n,o),t=o}if(d.push(t),c)return d}else{let n=I.read(e,a,r),t=new Set;for(let i of n){let n=I.instanceName+`_${i.key}`;if(null!==y&&o!==n)continue;if(t.has(n))throw Error(`Cannot read dynamic component instance ${I.instanceName} for component ${I.componentType.name} on entity ${e} because it emitted duplicate compound instance ${n}. Make emitted keys unique for this component instance.`);t.add(n);let a=s.get(i);if(!a||a.componentInstance.entityId!==e||a.componentInstance.componentType!==I.componentType||a.componentInstance.instanceName!==n){let t={state:function(e){let n={};for(let t in e)"key"!==t&&(n[t]=e[t]);return n}(i),componentInstance:{componentType:I.componentType,entityId:e,instanceName:n}};s.set(i,t),a=t}if(d.push(a),c)return d}}}}}for(let e of a.ephemeralRecords)if((void 0===i.entityIds||i.entityIds.has(e.componentInstance.entityId))&&(void 0===i.componentTypes||i.componentTypes.has(e.componentInstance.componentType))&&(void 0===i.instanceNames||i.instanceNames.has(e.componentInstance.instanceName))&&(d.push(e),c))break;return d}readOneComponent(e,n){let t=new i(e),o=this._readComponents(t,n,!1);if(o.length>1)throw Error(`Expected component ${e.componentType.name} to be attached only once to entity #${String(e.entityId)}, but found ${o.length} instances`);return o.length>0?o[0]:null}readManyComponents(e,n){let t=new i(e);return this._readComponents(t,n,!1)}readFirstComponent(e,n){let t=new i(e),o=this._readComponents(t,n,!0);return o.length>0?o[0]:null}readFirstRootComponent(e,n){let t=new i({...e,entityIds:[n.rootEntityId]}),o=this._readComponents(t,n,!0);return o.length>0?o[0]:null}readOneComponentOrThrow(e,n){let t=this.readOneComponent(e,n);if(null===t){let n=new i(e);throw Error(`Cannot read ${n.toString()} because such component is not attached`)}return t}isComponentTypeAttached=e=>{let n,i,s,{componentTypes:a,instanceNames:c,entityTypes:m}=("componentTypes"in e&&(n=e.componentTypes),"componentType"in e&&e.componentType&&(n=[e.componentType]),"instanceNames"in e&&(i=e.instanceNames),"instanceName"in e&&e.instanceName&&(i=[e.instanceName]),"entityIds"in e&&e.entityIds&&(s=e.entityIds.filter(o).map(e=>t(e))),"entityId"in e&&e.entityId&&(s=o(e.entityId)?[t(e.entityId)]:[]),{componentTypes:n,instanceNames:i,entityTypes:s}),p=this._context.selectors.getComponentReaderIndexes();for(let e of m??Array.from(p.allComponentTypes.keys()))for(let n of a??p.allComponentTypes.get(e)??[])for(let t of c??p.allComponentInstanceNames.get(e)?.get(n)??[])if(p.opticMap.get(e)?.get(n)?.get(t)||this._resolveDynamicInstanceName(e,n,t,p))return!0;return!1};peekManyComponents(e,n){let t=new i(e);return this._readComponents(t,n,!1,!0)}}
1
+ import{domainEntityTypeFromId as e,getComponentSystemFilterState as n,isComponentActive as t,isDomainEntityId as o}from"../../core/index.js";let i=class InternalFilter{componentTypes;entityIds;instanceNames;constructor(e){"entityId"in e&&void 0!==e.entityId&&(this.entityIds=new Set([e.entityId])),"entityIds"in e&&void 0!==e.entityIds&&(this.entityIds=new Set(e.entityIds)),"instanceName"in e&&void 0!==e.instanceName&&(this.instanceNames=new Set([e.instanceName])),"instanceNames"in e&&void 0!==e.instanceNames&&(this.instanceNames=new Set(e.instanceNames)),"componentType"in e&&void 0!==e.componentType&&(this.componentTypes=new Set([e.componentType])),"componentTypes"in e&&void 0!==e.componentTypes&&(this.componentTypes=new Set(e.componentTypes))}toString(){let e=this.instanceNames&&Array.from(this.instanceNames).join(", "),n=this.componentTypes&&Array.from(this.componentTypes).map(e=>e.name).join(", "),t=this.entityIds&&Array.from(this.entityIds).map(e=>`#${String(e)}`).join(", ");return[e?`instance ${e} of`:void 0,n?`component ${n}`:void 0,t?`on entity ${t}`:void 0].filter(Boolean).join(" ")}},s=new WeakMap;export class ComponentReader{_context;constructor(e){this._context=e}_resolveDynamicInstanceName=(e,n,t,o)=>{let i=o.dynamicInstanceNames.get(e)?.get(n);if(!i)return null;for(let e of i)if(t.startsWith(`${e}_`))return e;return null};_readComponents(i,a,c,p=!1){let m=n(a),r=this._context.selectors.getExpressionContext(),l=this._context.selectors.getComponentReaderIndexes(),d=[],y=void 0!==i.entityIds?[]:void 0;if(void 0!==i.entityIds)for(let e of i.entityIds)o(e)&&y?.push(e);if(void 0===y||y.length>0){let n=y??a.entities,o=void 0!==y?new Map:void 0;for(let y of n){let n="string"==typeof y?y:y.id;if(void 0!==o){if(o.has(n))continue;o.set(n,!0)}let f="string"==typeof y?e(n):y.type;for(let e of i.componentTypes??l.allComponentTypes.get(f)??[])for(let o of i.instanceNames??l.allComponentInstanceNames.get(f)?.get(e)??[]){let i=l.opticMap.get(f)?.get(e)?.get(o),y=i?null:this._resolveDynamicInstanceName(f,e,o,l),h=y?l.opticMap.get(f)?.get(e)?.get(y):void 0,I=i??h;if(!I)continue;let u=0===I.navigationFilters.length||t(m,I.navigationFilters,n,a,r,p);if(!0!==u){p&&d.push({componentInstance:{componentType:e,entityId:n,instanceName:o},filteredOut:!0,filterState:m,filterContext:{mode:r.mode,role:r.role},mismatchReasons:u});continue}if("simple"===I.kind){let e=I.read(n,a,r),t=s.get(e);if(!t||t.componentInstance.entityId!==n||t.componentInstance.componentType!==I.componentType||t.componentInstance.instanceName!==I.instanceName){let o={state:e,componentInstance:{componentType:I.componentType,entityId:n,instanceName:I.instanceName}};s.set(e,o),t=o}if(d.push(t),c)return d}else{let e=I.read(n,a,r),t=new Set;for(let i of e){let e=I.instanceName+`_${i.key}`;if(null!==y&&o!==e)continue;if(t.has(e))throw Error(`Cannot read dynamic component instance ${I.instanceName} for component ${I.componentType.name} on entity ${n} because it emitted duplicate compound instance ${e}. Make emitted keys unique for this component instance.`);t.add(e);let a=s.get(i);if(!a||a.componentInstance.entityId!==n||a.componentInstance.componentType!==I.componentType||a.componentInstance.instanceName!==e){let t={state:function(e){let n={};for(let t in e)"key"!==t&&(n[t]=e[t]);return n}(i),componentInstance:{componentType:I.componentType,entityId:n,instanceName:e}};s.set(i,t),a=t}if(d.push(a),c)return d}}}}}for(let e of a.ephemeralRecords)if((void 0===i.entityIds||i.entityIds.has(e.componentInstance.entityId))&&(void 0===i.componentTypes||i.componentTypes.has(e.componentInstance.componentType))&&(void 0===i.instanceNames||i.instanceNames.has(e.componentInstance.instanceName))&&(d.push(e),c))break;return d}readOneComponent(e,n){let t=new i(e),o=this._readComponents(t,n,!1);if(o.length>1)throw Error(`Expected component ${e.componentType.name} to be attached only once to entity #${String(e.entityId)}, but found ${o.length} instances`);return o.length>0?o[0]:null}readManyComponents(e,n){let t=new i(e);return this._readComponents(t,n,!1)}readFirstComponent(e,n){let t=new i(e),o=this._readComponents(t,n,!0);return o.length>0?o[0]:null}readFirstRootComponent(e,n){let t=new i({...e,entityIds:[n.rootEntityId]}),o=this._readComponents(t,n,!0);return o.length>0?o[0]:null}readOneComponentOrThrow(e,n){let t=this.readOneComponent(e,n);if(null===t){let n=new i(e);throw Error(`Cannot read ${n.toString()} because such component is not attached`)}return t}isComponentTypeAttached=n=>{let t,i,s,{componentTypes:a,instanceNames:c,entityTypes:p}=("componentTypes"in n&&(t=n.componentTypes),"componentType"in n&&n.componentType&&(t=[n.componentType]),"instanceNames"in n&&(i=n.instanceNames),"instanceName"in n&&n.instanceName&&(i=[n.instanceName]),"entityIds"in n&&n.entityIds&&(s=n.entityIds.filter(o).map(n=>e(n))),"entityId"in n&&n.entityId&&(s=o(n.entityId)?[e(n.entityId)]:[]),{componentTypes:t,instanceNames:i,entityTypes:s}),m=this._context.selectors.getComponentReaderIndexes();for(let e of p??Array.from(m.allComponentTypes.keys()))for(let n of a??m.allComponentTypes.get(e)??[])for(let t of c??m.allComponentInstanceNames.get(e)?.get(n)??[])if(m.opticMap.get(e)?.get(n)?.get(t)||this._resolveDynamicInstanceName(e,n,t,m))return!0;return!1};peekManyComponents(e,n){let t=new i(e);return this._readComponents(t,n,!1,!0)}}
@@ -1,6 +1,4 @@
1
- import type { DomainComponentOptic } from '../../components/index.js';
2
- import { type AnyDomain } from '../../core/domain.js';
3
- import type { AnyDomainFactory, AnyExpressionContext, DomainEntity, DomainMode, SystemComponentTypeConstraint } from '../../core/index.js';
1
+ import { type AnyDomain, type AnyDomainFactory, type AnyExpressionContext, type DomainComponentOptic, type DomainEntity, type DomainMode, type SystemComponentTypeConstraint } from '../../core/index.js';
4
2
  import { type AnyActionSystem } from '../../domain-context/action-system/action-system.js';
5
3
  import { type AnyDimensionSystem } from '../../domain-context/dimension-system/dimension-system.js';
6
4
  import type { AnyDomainContextSystems } from '../../domain-context/domain-context-systems.js';
@@ -1 +1 @@
1
- import{createSelector as e}from"@salsita-ai/common/utils";import{prepareActionImplementations as t}from"../../actions/prepare-action-implementations.js";import{Domain as n}from"../../core/domain.js";import{createInitialDomainState as o}from"../../core/state.js";import{ActionSystem as i}from"../../domain-context/action-system/action-system.js";import{DimensionSystem as a}from"../../domain-context/dimension-system/dimension-system.js";import{NavigationSystem as s}from"../../domain-context/navigation-system/navigation-system.js";import{RecipeCookerSystem as r}from"../../domain-context/recipe-system/recipe-cooker-system.js";import{StoreSystem as c}from"../../domain-context/store-system/store-system.js";import{UndoSystem as m}from"../../domain-context/undo-system.js";import{prepareDomainExpressions as l}from"../../expressions/index.js";import{BlenderProjections as d,CollisionProjections as g,CompositionProjections as f,ConstraintProjections as p,PositionProjections as u,ProjectedEntitiesProjections as y,SnappingProjections as w,ValidationProjections as h}from"../../projections/index.js";import{SketchingProjections as S}from"../../sketching/sketching-projections.js";import{requireAccessService as x}from"../access/index.js";import{ComponentReader as j}from"./component-reader.js";import{DomainContext as C}from"./domain-context.js";let D=e.withTypes(),v=[],I={},P={role:"admin",data:I},M=e=>{if(null!==e)return e;throw Error("Cannot read the session role and data because the domain session context is not set. The session context is written into the domain runtime by the session lifecycle after authentication. Move this read into the loaded session lifecycle.")};export const createDomainContextSelectors=e=>{let{applicationType:A,getState:R,actions:E,specSelectors:T,accessSelectors:b,webComponentSelectors:k,domainDataSelectors:$,sessionContextSelectors:N,domainServicesSelectors:z,environmentSelectors:L,getExtensionSystems:V}=e,B="configurator"===A?T.selectConfiguratorSpec:T.selectAdminSpec,F="configurator"===A?b.selectConfiguratorRawAccessService:b.selectAdminRawAccessService,W=D.leaf(e=>e.domainContext[A]),_=D([W],e=>e.initializationContext),q=D([_],e=>{if(null===e)throw Error(`Domain lifecycle context is not available for ${A}! Read it from an active domain lifecycle.`);return e}),O=D([W],e=>e.executionMode),U=D([W],e=>e.isInitialized),G=D([B],e=>e.factory),H=D([B],e=>e.expressions),J=D([B],e=>e.actions),K=D([B],e=>e.actionImplementations),Q=D([J,K],t),X=D([B],e=>e.$entityReflections),Y=D([H,X],(e,t)=>l({expressions:e,$entityReflections:t})),Z=D([B],e=>e.modelVersion),ee=D([B],e=>e.aliasMap),et=D([B],e=>e.allowedRootEntityTypes),en=D([B],e=>e.entityReflections),eo=D([B],e=>e.migrate),ei=D([O,k.selectReadonly,F],(e,t,n)=>"finalize"===e?"finalize":x(A,n).accessInfo.viewMode||t?"read":"owner"),ea=D([F],e=>e?.configurationId??null),es="configurator"===A?N.selectSessionContext:D([],()=>P),er=D([es],e=>e?.role??null),ec=D([es],e=>e?.data??null),em=D([D.leaf(e=>e.loadedData)],e=>"configurator"===A?e.configuratorLoadedData:e.adminLoadedData),el=D([em],e=>e?.schemaIdentity??null),ed=D([em,G],(e,t)=>{if(null===e)return"coherent";let n=e.schemaIdentity;return void 0===n?"missing-stamp":n===t?"coherent":"schema-mismatch"}),eg=D([ea,er,ec,el,ed],(e,t,n,o,i)=>null===e||null===t||null===n||null===o||"coherent"!==i?null:{configurationId:e,role:t,schemaIdentity:o,sessionData:n}),ef=D([F,k.selectReadonly],(e,t)=>e?.accessInfo.viewMode===!0||t),ep=D([eg,_,U,ef],(e,t,n,o)=>{let i=null!==e&&null!==t&&n&&t.configurationId===e.configurationId&&t.role===e.role&&t.schemaIdentity===e.schemaIdentity&&t.sessionData===e.sessionData;return{identity:e,isCurrent:i,isViewMode:o}}),eu=D([B],e=>e.componentOptics),ey=D([eu],e=>(e=>{let t=new Map,n=new Map,o=new Map,i=new Map;for(let n of e)for(let e of n.entityTypes){let o=t.get(e);o||(o=new Map,t.set(e,o));let a=o.get(n.componentType);if(a||(a=new Map,o.set(n.componentType,a)),a.has(n.instanceName))throw Error(`Component instance ${n.instanceName} already exists for type ${n.componentType.name} in entity ${e}. This is likely a bug in the component definition! InstanceNames must be unique within an entity and component.`);if(a.set(n.instanceName,n),"dynamic"===n.kind){let t=i.get(e);t||(t=new Map,i.set(e,t));let o=t.get(n.componentType)??[],a=o.find(e=>{var t;return t=n.instanceName,e.startsWith(`${t}_`)||t.startsWith(`${e}_`)});if(a)throw Error(`Cannot register dynamic component instance ${n.instanceName} for component ${n.componentType.name} on entity ${e} because it overlaps with dynamic instance ${a}. Rename one dynamic instance so compound names cannot be ambiguous.`);t.set(n.componentType,[...o,n.instanceName])}}for(let[e,i]of t.entries()){n.set(e,new Set(i.keys()));let t=new Map;for(let[n,a]of(o.set(e,t),i.entries()))t.set(n,new Set(a.keys()))}return{opticMap:t,allComponentTypes:n,allComponentInstanceNames:o,dynamicInstanceNames:i}})(e)),ew=D([ey,Y,et],(e,t,n)=>({componentReaderIndexes:e,domainExpressions:t,allowedRootEntityTypes:n})),eh=D([B],e=>e.navigationStates),eS=D([B],e=>e.viewStates),ex="configurator"===A?D([T.selectConfiguratorSpec],e=>e.toolStates):D([],()=>v),ej="configurator"===A?D([T.selectConfiguratorSpec],e=>e.exportStates):D([],()=>v),eC="configurator"===A?D([T.selectConfiguratorSpec],e=>e.createTransformers):D([],()=>void 0),eD=D([em],e=>{if(null===e)throw Error(`Loaded data is not available for ${A}! Loaded data is written after the configuration fetch succeeds and before the domain context initialization starts.`);return e}),ev=D([eD,G],(e,t)=>o(t.validateAndMigrateState(e.initialEntities,e.modelVersion),e.rootEntityType)),eI="configurator"===A?$.selectConfiguratorFrontendData:$.selectAdminFrontendData,eP="configurator"===A?$.selectConfiguratorBackendData:$.selectAdminBackendData,eM="configurator"===A?$.selectConfiguratorPublishedData:$.selectAdminPublishedData,eA="configurator"===A?D([N.selectSessionContext],e=>M(e).role):D([],()=>"admin"),eR="configurator"===A?D([N.selectSessionContext],e=>M(e).data):D([],()=>I),eE=D([ea,ei,eA,eR,eD],(e,t,n,o,i)=>({configurationId:e,mode:t,role:n,schemaIdentity:i.schemaIdentity,sessionData:o})),eT=D([q],e=>e.mode),eb=D([q],e=>{let t=e.configurationId;if(null===t)throw Error(`Configuration id is not available for ${A}! Read it from an active interactive domain lifecycle.`);return t}),ek=D([q],e=>e.role),e$=D([q],e=>e.sessionData),eN=D([eT,ek,e$,eI,eP,eM,eo],(e,t,n,o,i,a,s)=>({mode:e,role:t,sessionData:n,frontendData:o,backendData:i,publishedData:a,migrate:s,domain:eL,componentReader:eV,positionProjections:eq,sketchingProjections:e_,collisionProjections:eO,constraintProjections:eG,snappingProjections:eU,projectedEntitiesProjections:eH})),ez={selectApplicationSpec:B,selectRawAccessService:F,selectDomainContextState:W,selectInitializationContext:_,selectActiveInitializationContext:q,selectExecutionMode:O,selectIsInitialized:U,selectFactory:G,selectSpecExpressions:H,select$SpecEntityReflections:X,selectDomainExpressions:Y,selectModelVersion:Z,selectAliasMap:ee,selectAllowedRootEntityTypes:et,selectEntityReflections:en,selectMigrate:eo,selectLatestMode:ei,selectLatestConfigurationId:ea,selectLatestSessionContext:es,selectLatestRoleOrNull:er,selectLatestSessionDataOrNull:ec,selectLatestSchemaIdentity:el,selectSchemaCoherence:ed,selectInitializationIdentity:eg,selectIsViewMode:ef,selectInitializationState:ep,selectComponentOptics:eu,selectComponentReaderIndexes:ey,selectStoreRuntimeDependencies:ew,selectNavigationStates:eh,selectViewStates:eS,selectToolStates:ex,selectExportStates:ej,selectCreateTransformers:eC,selectLatestLoadedData:em,selectLoadedData:eD,selectInitialDomainState:ev,selectFrontendData:eI,selectBackendData:eP,selectPublishedData:eM,selectLatestRole:eA,selectLatestSessionData:eR,selectNextInitializationContext:eE,selectActiveMode:eT,selectActiveConfigurationId:eb,selectActiveRole:ek,selectActiveSessionData:e$,selectExpressionContext:eN,getInitializationContext:()=>_(R()),getInitializationState:()=>ep(R()),getNextInitializationContext:()=>eE(R()),getLatestLoadedData:()=>em(R()),getSchemaCoherence:()=>ed(R()),getActiveConfigurationId:()=>eb(R()),getFactory:()=>G(R()),getDomainExpressions:()=>Y(R()),getActionDefinitions:()=>J(R()),getActionImplementations:()=>Q(R()),getModelVersion:()=>Z(R()),getAliasMap:()=>ee(R()),getAllowedRootEntityTypes:()=>et(R()),getEntityReflections:()=>en(R()),getMigrate:()=>eo(R()),getActiveMode:()=>eT(R()),getIsInitialized:()=>U(R()),getComponentReaderIndexes:()=>ey(R()),getStoreRuntimeDependencies:()=>ew(R()),getNavigationStates:()=>eh(R()),getViewStates:()=>eS(R()),getToolStates:()=>ex(R()),getExportStates:()=>ej(R()),getCreateTransformers:()=>eC(R()),getLoadedData:()=>eD(R()),getInitialDomainState:()=>ev(R()),getFrontendData:()=>eI(R()),getBackendData:()=>eP(R()),getPublishedData:()=>eM(R()),getActiveRole:()=>ek(R()),getActiveSessionData:()=>e$(R()),getDomain:()=>eL,getComponentReader:()=>eV,getCompositionProjections:()=>eB,getDimensionSystem:()=>eF,getValidationProjections:()=>eW,getSketchingProjections:()=>e_,getPositionProjections:()=>eq,getCollisionProjections:()=>eO,getSnappingProjections:()=>eU,getConstraintProjections:()=>eG,getProjectedEntitiesProjections:()=>eH,getStoreSystem:()=>eJ,getNavigationSystem:()=>eK,getUndoSystem:()=>eQ,getRecipeCookerSystem:()=>eX,getActionSystem:()=>eY,getBlenderProjections:()=>eZ,getExpressionContext:()=>eN(R()),getDomainSystems:function(){return e0},getDomainContext:function(){return e1}},eL=new n({selectors:ez}),eV=new j({selectors:ez}),eB=new f({selectors:ez}),eF=new a({selectors:ez}),eW=new h({selectors:ez}),e_=new S({selectors:ez}),eq=new u({selectors:ez}),eO=new g({selectors:ez}),eU=new w({selectors:ez}),eG=new p({selectors:ez}),eH=new y({selectors:ez}),eJ=new c({selectors:ez,domainServicesSelectors:z,environmentSelectors:L}),eK=new s({selectors:ez,domainServicesSelectors:z}),eQ=new m({selectors:ez}),eX=new r({selectors:ez}),eY=new i({selectors:ez}),eZ=new d({selectors:ez,domainServicesSelectors:z}),e0={domainContextSelectors:ez,domain:eL,componentReader:eV,compositionProjections:eB,blenderProjections:eZ,validationProjections:eW,storeSystem:eJ,navigationSystem:eK,dimensionSystem:eF,undoSystem:eQ,recipeCooker:eX,actionSystem:eY,sketchingProjections:e_,collisionProjections:eO,positionProjections:eq,snappingProjections:eU,projectedEntitiesProjections:eH,constraintProjections:eG},e1=new C({selectors:ez,actions:E,getExtensionSystems:V});return ez};
1
+ import{createSelector as e}from"@salsita-ai/common/utils";import{Domain as t,createInitialDomainState as n,prepareActionImplementations as o,prepareDomainExpressions as i}from"../../core/index.js";import{ActionSystem as a}from"../../domain-context/action-system/action-system.js";import{DimensionSystem as s}from"../../domain-context/dimension-system/dimension-system.js";import{NavigationSystem as r}from"../../domain-context/navigation-system/navigation-system.js";import{RecipeCookerSystem as c}from"../../domain-context/recipe-system/recipe-cooker-system.js";import{StoreSystem as l}from"../../domain-context/store-system/store-system.js";import{UndoSystem as m}from"../../domain-context/undo-system.js";import{BlenderProjections as d,CollisionProjections as g,CompositionProjections as f,ConstraintProjections as p,PositionProjections as u,ProjectedEntitiesProjections as y,SnappingProjections as w,ValidationProjections as h}from"../../projections/index.js";import{SketchingProjections as S}from"../../sketching/sketching-projections.js";import{requireAccessService as x}from"../access/index.js";import{ComponentReader as C}from"./component-reader.js";import{DomainContext as j}from"./domain-context.js";let D=e.withTypes(),v=[],I={},P={role:"admin",data:I},M=e=>{if(null!==e)return e;throw Error("Cannot read the session role and data because the domain session context is not set. The session context is written into the domain runtime by the session lifecycle after authentication. Move this read into the loaded session lifecycle.")};export const createDomainContextSelectors=e=>{let{applicationType:A,getState:R,actions:E,specSelectors:T,accessSelectors:b,webComponentSelectors:k,domainDataSelectors:$,sessionContextSelectors:N,domainServicesSelectors:z,environmentSelectors:L,getExtensionSystems:V}=e,B="configurator"===A?T.selectConfiguratorSpec:T.selectAdminSpec,F="configurator"===A?b.selectConfiguratorRawAccessService:b.selectAdminRawAccessService,W=D.leaf(e=>e.domainContext[A]),_=D([W],e=>e.initializationContext),q=D([_],e=>{if(null===e)throw Error(`Domain lifecycle context is not available for ${A}! Read it from an active domain lifecycle.`);return e}),O=D([W],e=>e.executionMode),U=D([W],e=>e.isInitialized),G=D([B],e=>e.factory),H=D([B],e=>e.expressions),J=D([B],e=>e.actions),K=D([B],e=>e.actionImplementations),Q=D([J,K],o),X=D([B],e=>e.$entityReflections),Y=D([H,X],(e,t)=>i({expressions:e,$entityReflections:t})),Z=D([B],e=>e.modelVersion),ee=D([B],e=>e.aliasMap),et=D([B],e=>e.allowedRootEntityTypes),en=D([B],e=>e.entityReflections),eo=D([B],e=>e.migrate),ei=D([O,k.selectReadonly,F],(e,t,n)=>"finalize"===e?"finalize":x(A,n).accessInfo.viewMode||t?"read":"owner"),ea=D([F],e=>e?.configurationId??null),es="configurator"===A?N.selectSessionContext:D([],()=>P),er=D([es],e=>e?.role??null),ec=D([es],e=>e?.data??null),el=D([D.leaf(e=>e.loadedData)],e=>"configurator"===A?e.configuratorLoadedData:e.adminLoadedData),em=D([el],e=>e?.schemaIdentity??null),ed=D([el,G],(e,t)=>{if(null===e)return"coherent";let n=e.schemaIdentity;return void 0===n?"missing-stamp":n===t?"coherent":"schema-mismatch"}),eg=D([ea,er,ec,em,ed],(e,t,n,o,i)=>null===e||null===t||null===n||null===o||"coherent"!==i?null:{configurationId:e,role:t,schemaIdentity:o,sessionData:n}),ef=D([F,k.selectReadonly],(e,t)=>e?.accessInfo.viewMode===!0||t),ep=D([eg,_,U,ef],(e,t,n,o)=>{let i=null!==e&&null!==t&&n&&t.configurationId===e.configurationId&&t.role===e.role&&t.schemaIdentity===e.schemaIdentity&&t.sessionData===e.sessionData;return{identity:e,isCurrent:i,isViewMode:o}}),eu=D([B],e=>e.componentOptics),ey=D([eu],e=>(e=>{let t=new Map,n=new Map,o=new Map,i=new Map;for(let n of e)for(let e of n.entityTypes){let o=t.get(e);o||(o=new Map,t.set(e,o));let a=o.get(n.componentType);if(a||(a=new Map,o.set(n.componentType,a)),a.has(n.instanceName))throw Error(`Component instance ${n.instanceName} already exists for type ${n.componentType.name} in entity ${e}. This is likely a bug in the component definition! InstanceNames must be unique within an entity and component.`);if(a.set(n.instanceName,n),"dynamic"===n.kind){let t=i.get(e);t||(t=new Map,i.set(e,t));let o=t.get(n.componentType)??[],a=o.find(e=>{var t;return t=n.instanceName,e.startsWith(`${t}_`)||t.startsWith(`${e}_`)});if(a)throw Error(`Cannot register dynamic component instance ${n.instanceName} for component ${n.componentType.name} on entity ${e} because it overlaps with dynamic instance ${a}. Rename one dynamic instance so compound names cannot be ambiguous.`);t.set(n.componentType,[...o,n.instanceName])}}for(let[e,i]of t.entries()){n.set(e,new Set(i.keys()));let t=new Map;for(let[n,a]of(o.set(e,t),i.entries()))t.set(n,new Set(a.keys()))}return{opticMap:t,allComponentTypes:n,allComponentInstanceNames:o,dynamicInstanceNames:i}})(e)),ew=D([ey,Y,et],(e,t,n)=>({componentReaderIndexes:e,domainExpressions:t,allowedRootEntityTypes:n})),eh=D([B],e=>e.navigationStates),eS=D([B],e=>e.viewStates),ex="configurator"===A?D([T.selectConfiguratorSpec],e=>e.toolStates):D([],()=>v),eC="configurator"===A?D([T.selectConfiguratorSpec],e=>e.exportStates):D([],()=>v),ej="configurator"===A?D([T.selectConfiguratorSpec],e=>e.createTransformers):D([],()=>void 0),eD=D([el],e=>{if(null===e)throw Error(`Loaded data is not available for ${A}! Loaded data is written after the configuration fetch succeeds and before the domain context initialization starts.`);return e}),ev=D([eD,G],(e,t)=>n(t.validateAndMigrateState(e.initialEntities,e.modelVersion),e.rootEntityType)),eI="configurator"===A?$.selectConfiguratorFrontendData:$.selectAdminFrontendData,eP="configurator"===A?$.selectConfiguratorBackendData:$.selectAdminBackendData,eM="configurator"===A?$.selectConfiguratorPublishedData:$.selectAdminPublishedData,eA="configurator"===A?D([N.selectSessionContext],e=>M(e).role):D([],()=>"admin"),eR="configurator"===A?D([N.selectSessionContext],e=>M(e).data):D([],()=>I),eE=D([ea,ei,eA,eR,eD],(e,t,n,o,i)=>({configurationId:e,mode:t,role:n,schemaIdentity:i.schemaIdentity,sessionData:o})),eT=D([q],e=>e.mode),eb=D([q],e=>{let t=e.configurationId;if(null===t)throw Error(`Configuration id is not available for ${A}! Read it from an active interactive domain lifecycle.`);return t}),ek=D([q],e=>e.role),e$=D([q],e=>e.sessionData),eN=D([eT,ek,e$,eI,eP,eM,eo],(e,t,n,o,i,a,s)=>({mode:e,role:t,sessionData:n,frontendData:o,backendData:i,publishedData:a,migrate:s,domain:eL,componentReader:eV,positionProjections:eq,sketchingProjections:e_,collisionProjections:eO,constraintProjections:eG,snappingProjections:eU,projectedEntitiesProjections:eH})),ez={selectApplicationSpec:B,selectRawAccessService:F,selectDomainContextState:W,selectInitializationContext:_,selectActiveInitializationContext:q,selectExecutionMode:O,selectIsInitialized:U,selectFactory:G,selectSpecExpressions:H,select$SpecEntityReflections:X,selectDomainExpressions:Y,selectModelVersion:Z,selectAliasMap:ee,selectAllowedRootEntityTypes:et,selectEntityReflections:en,selectMigrate:eo,selectLatestMode:ei,selectLatestConfigurationId:ea,selectLatestSessionContext:es,selectLatestRoleOrNull:er,selectLatestSessionDataOrNull:ec,selectLatestSchemaIdentity:em,selectSchemaCoherence:ed,selectInitializationIdentity:eg,selectIsViewMode:ef,selectInitializationState:ep,selectComponentOptics:eu,selectComponentReaderIndexes:ey,selectStoreRuntimeDependencies:ew,selectNavigationStates:eh,selectViewStates:eS,selectToolStates:ex,selectExportStates:eC,selectCreateTransformers:ej,selectLatestLoadedData:el,selectLoadedData:eD,selectInitialDomainState:ev,selectFrontendData:eI,selectBackendData:eP,selectPublishedData:eM,selectLatestRole:eA,selectLatestSessionData:eR,selectNextInitializationContext:eE,selectActiveMode:eT,selectActiveConfigurationId:eb,selectActiveRole:ek,selectActiveSessionData:e$,selectExpressionContext:eN,getInitializationContext:()=>_(R()),getInitializationState:()=>ep(R()),getNextInitializationContext:()=>eE(R()),getLatestLoadedData:()=>el(R()),getSchemaCoherence:()=>ed(R()),getActiveConfigurationId:()=>eb(R()),getFactory:()=>G(R()),getDomainExpressions:()=>Y(R()),getActionDefinitions:()=>J(R()),getActionImplementations:()=>Q(R()),getModelVersion:()=>Z(R()),getAliasMap:()=>ee(R()),getAllowedRootEntityTypes:()=>et(R()),getEntityReflections:()=>en(R()),getMigrate:()=>eo(R()),getActiveMode:()=>eT(R()),getIsInitialized:()=>U(R()),getComponentReaderIndexes:()=>ey(R()),getStoreRuntimeDependencies:()=>ew(R()),getNavigationStates:()=>eh(R()),getViewStates:()=>eS(R()),getToolStates:()=>ex(R()),getExportStates:()=>eC(R()),getCreateTransformers:()=>ej(R()),getLoadedData:()=>eD(R()),getInitialDomainState:()=>ev(R()),getFrontendData:()=>eI(R()),getBackendData:()=>eP(R()),getPublishedData:()=>eM(R()),getActiveRole:()=>ek(R()),getActiveSessionData:()=>e$(R()),getDomain:()=>eL,getComponentReader:()=>eV,getCompositionProjections:()=>eB,getDimensionSystem:()=>eF,getValidationProjections:()=>eW,getSketchingProjections:()=>e_,getPositionProjections:()=>eq,getCollisionProjections:()=>eO,getSnappingProjections:()=>eU,getConstraintProjections:()=>eG,getProjectedEntitiesProjections:()=>eH,getStoreSystem:()=>eJ,getNavigationSystem:()=>eK,getUndoSystem:()=>eQ,getRecipeCookerSystem:()=>eX,getActionSystem:()=>eY,getBlenderProjections:()=>eZ,getExpressionContext:()=>eN(R()),getDomainSystems:function(){return e0},getDomainContext:function(){return e1}},eL=new t({selectors:ez}),eV=new C({selectors:ez}),eB=new f({selectors:ez}),eF=new s({selectors:ez}),eW=new h({selectors:ez}),e_=new S({selectors:ez}),eq=new u({selectors:ez}),eO=new g({selectors:ez}),eU=new w({selectors:ez}),eG=new p({selectors:ez}),eH=new y({selectors:ez}),eJ=new l({selectors:ez,domainServicesSelectors:z,environmentSelectors:L}),eK=new r({selectors:ez,domainServicesSelectors:z}),eQ=new m({selectors:ez}),eX=new c({selectors:ez}),eY=new a({selectors:ez}),eZ=new d({selectors:ez,domainServicesSelectors:z}),e0={domainContextSelectors:ez,domain:eL,componentReader:eV,compositionProjections:eB,blenderProjections:eZ,validationProjections:eW,storeSystem:eJ,navigationSystem:eK,dimensionSystem:eF,undoSystem:eQ,recipeCooker:eX,actionSystem:eY,sketchingProjections:e_,collisionProjections:eO,positionProjections:eq,snappingProjections:eU,projectedEntitiesProjections:eH,constraintProjections:eG},e1=new j({selectors:ez,actions:E,getExtensionSystems:V});return ez};
@@ -61,7 +61,7 @@ export declare function createDomainRuntimeSlices<State extends DomainRuntimeSta
61
61
  selectAdminPreset: import("@salsita-ai/common/utils").Selector<import("./index.js").SpecSelectorState, import("../index.js").AnyProductPreset>;
62
62
  selectAdminModelVersion: import("@salsita-ai/common/utils").Selector<import("./index.js").SpecSelectorState, number>;
63
63
  selectThemeOptions: import("@salsita-ai/common/utils").Selector<import("./index.js").SpecSelectorState, import("@mui/material").ThemeOptions>;
64
- selectAssistant: import("@salsita-ai/common/utils").Selector<import("./index.js").SpecSelectorState, import("../index.js").AssistantManifest | null>;
64
+ selectAssistant: import("@salsita-ai/common/utils").Selector<import("./index.js").SpecSelectorState, Required<import("../index.js").AssistantManifest> | null>;
65
65
  selectConfiguratorFactory: import("@salsita-ai/common/utils").Selector<import("./index.js").SpecSelectorState, import("../index.js").AnyDomainFactory>;
66
66
  selectAdminFactory: import("@salsita-ai/common/utils").Selector<import("./index.js").SpecSelectorState, import("../index.js").AnyDomainFactory>;
67
67
  selectConfiguratorComponentOptics: import("@salsita-ai/common/utils").Selector<import("./index.js").SpecSelectorState, readonly import("../index.js").AnyDomainComponentOptic[]>;
@@ -104,7 +104,7 @@ export declare function createDomainRuntimeSlices<State extends DomainRuntimeSta
104
104
  getAdminPreset: () => import("../index.js").AnyProductPreset;
105
105
  getAdminModelVersion: () => number;
106
106
  getThemeOptions: () => import("@mui/material").ThemeOptions;
107
- getAssistant: () => import("../index.js").AssistantManifest | null;
107
+ getAssistant: () => Required<import("../index.js").AssistantManifest> | null;
108
108
  getConfiguratorFactory: () => import("../index.js").AnyDomainFactory;
109
109
  getAdminFactory: () => import("../index.js").AnyDomainFactory;
110
110
  getConfiguratorComponentOptics: () => readonly import("../index.js").AnyDomainComponentOptic[];
@@ -651,7 +651,7 @@ export declare const createDomainRuntime: (props: Omit<Props<DomainRuntimeState>
651
651
  selectAdminPreset: import("@salsita-ai/common/utils").Selector<import("./index.js").SpecSelectorState, import("../index.js").AnyProductPreset>;
652
652
  selectAdminModelVersion: import("@salsita-ai/common/utils").Selector<import("./index.js").SpecSelectorState, number>;
653
653
  selectThemeOptions: import("@salsita-ai/common/utils").Selector<import("./index.js").SpecSelectorState, import("@mui/material").ThemeOptions>;
654
- selectAssistant: import("@salsita-ai/common/utils").Selector<import("./index.js").SpecSelectorState, import("../index.js").AssistantManifest | null>;
654
+ selectAssistant: import("@salsita-ai/common/utils").Selector<import("./index.js").SpecSelectorState, Required<import("../index.js").AssistantManifest> | null>;
655
655
  selectConfiguratorFactory: import("@salsita-ai/common/utils").Selector<import("./index.js").SpecSelectorState, import("../index.js").AnyDomainFactory>;
656
656
  selectAdminFactory: import("@salsita-ai/common/utils").Selector<import("./index.js").SpecSelectorState, import("../index.js").AnyDomainFactory>;
657
657
  selectConfiguratorComponentOptics: import("@salsita-ai/common/utils").Selector<import("./index.js").SpecSelectorState, readonly import("../index.js").AnyDomainComponentOptic[]>;
@@ -694,7 +694,7 @@ export declare const createDomainRuntime: (props: Omit<Props<DomainRuntimeState>
694
694
  getAdminPreset: () => import("../index.js").AnyProductPreset;
695
695
  getAdminModelVersion: () => number;
696
696
  getThemeOptions: () => import("@mui/material").ThemeOptions;
697
- getAssistant: () => import("../index.js").AssistantManifest | null;
697
+ getAssistant: () => Required<import("../index.js").AssistantManifest> | null;
698
698
  getConfiguratorFactory: () => import("../index.js").AnyDomainFactory;
699
699
  getAdminFactory: () => import("../index.js").AnyDomainFactory;
700
700
  getConfiguratorComponentOptics: () => readonly import("../index.js").AnyDomainComponentOptic[];
@@ -1 +1 @@
1
- import{SessionRole as e}from"@salsita-ai/contracts/api";let a=(e,a)=>{let t={};for(let n of e)t[n.name]=a?.[n.name]??n.name;return t},t=(e,a)=>{let t={},n=0;for(let o of e)if("entity"===o.type||"layout"===o.type)t[o.name]=a?.[o.name]??o.name;else{let e=`icon:${n}`;t[e]=a?.[e]??`${e}:${o.elements.length}`,n+=1}return t};export const initializeSpec=n=>{let o=n.adminDomain.presets[0];if(!o)throw Error("Cannot register application spec because admin preset is required.");return{version:n.version,dataConfig:n.dataSpec??null,chunks:n.chunks,publishedDataHash:n.publishedDataHash,initialPublishedData:n.initialPublishedData,canCreate:n.features?.acl?.canCreate??Object.values(e),enableAdminRelease:n.features?.enableAdminRelease??!1,textLanguages:n.domain.textLanguages??n.adminDomain.textLanguages??["en"],baseResourcesUrl:n.resources?.baseResourcesUrl??n.defaultEnvs?.resourcesUrl??"",configurator:{factory:n.domain.domainFactory,presets:n.domain.presets,aliasMap:n.domain.domainFactory.context.aliasMap,entityReflections:n.domain.domainFactory.context.entityReflections,$entityReflections:n.domain.domainFactory.context.$entityReflections,expressions:n.domain.domainFactory.context.expressions,actions:n.domain.domainFactory.context.actions,actionImplementations:n.domain.domainFactory.context.actionImplementations,allowedRootEntityTypes:n.domain.domainFactory.context.allowedRootEntityTypes,migrate:n.domain.domainFactory.context.migrate,componentOptics:n.domain.componentOptics,createTransformers:n.createTransformers??(()=>[]),navigationStates:n.navigation?.navigationStates??[],viewStates:n.navigation?.viewStates??[],toolStates:n.navigation?.toolStates??[],exportStates:n.navigation?.exportStates??[],handlers:n.handlers,handlerHashes:a(n.handlers),elements:n.elements,elementHashes:t(n.elements),appLoader:n.ui?.appLoader??"universal",preview:n.ui?.preview??"auto",alwaysExpand:n.ui?.alwaysExpand??!1,theme:n.ui?.theme??{},assistant:n.assistant??null,deploymentQueryDisabled:n.resources?.deploymentQueryDisabled??!1,prefetchTextureUrls:n.resources?.prefetchTextureUrls??[],modelVersion:n.domain.domainFactory.modelVersion},admin:{factory:n.adminDomain.domainFactory,modelVersion:n.adminDomain.domainFactory.modelVersion,aliasMap:n.adminDomain.domainFactory.context.aliasMap,entityReflections:n.adminDomain.domainFactory.context.entityReflections,$entityReflections:n.adminDomain.domainFactory.context.$entityReflections,expressions:n.adminDomain.domainFactory.context.expressions,actions:n.adminDomain.domainFactory.context.actions,actionImplementations:n.adminDomain.domainFactory.context.actionImplementations,allowedRootEntityTypes:n.adminDomain.domainFactory.context.allowedRootEntityTypes,migrate:n.adminDomain.domainFactory.context.migrate,preset:o,componentOptics:n.adminDomain.componentOptics,navigationStates:n.adminNavigation?.navigationStates??[],viewStates:n.adminNavigation?.viewStates??[],handlers:n.handlers,handlerHashes:a(n.handlers),elements:n.elements,elementHashes:t(n.elements)}}};
1
+ import{SessionRole as e}from"@salsita-ai/contracts/api";import{resolveElementModules as t}from"../../application/element-registration.js";import{resolveHandlerModules as a}from"../../application/handler-registration.js";import{resolveImportedTransformers as n,resolveTransformerModules as o}from"../../application/resolve-imported-transformers.js";import{resolveComponentOpticModules as i}from"../../core/index.js";export const initializeSpec=s=>{let r=s.adminDomain.presets[0];if(!r)throw Error("Cannot register application spec because admin preset is required.");let m=a(s.handlers),c=t(s.elements),d=(e=>{let t={};for(let a of e)t[a.name]=(void 0)??a.name;return t})(m),l=(e=>{let t={},a=0;for(let n of e)if("entity"===n.type||"layout"===n.type)t[n.name]=(void 0)??n.name;else{let e=`icon:${a}`;t[e]=(void 0)??`${e}:${n.elements.length}`,a+=1}return t})(c),p=o(s.transformers?.importedTransformers??[]),y=s.transformers?.specTransformers??[];return{version:s.version,dataConfig:s.dataSpec??null,chunks:s.chunks,publishedDataHash:s.publishedDataHash,initialPublishedData:s.initialPublishedData,canCreate:s.features?.acl?.canCreate??Object.values(e),enableAdminRelease:s.features?.enableAdminRelease??!1,textLanguages:s.domain.textLanguages??s.adminDomain.textLanguages??["en"],baseResourcesUrl:s.resources?.baseResourcesUrl??s.defaultEnvs?.resourcesUrl??"",configurator:{factory:s.domain.domainFactory,presets:s.domain.presets,aliasMap:s.domain.domainFactory.context.aliasMap,entityReflections:s.domain.domainFactory.context.entityReflections,$entityReflections:s.domain.domainFactory.context.$entityReflections,expressions:s.domain.domainFactory.context.expressions,actions:s.domain.domainFactory.context.actions,actionImplementations:s.domain.domainFactory.context.actionImplementations,allowedRootEntityTypes:s.domain.domainFactory.context.allowedRootEntityTypes,migrate:s.domain.domainFactory.context.migrate,componentOptics:i(s.domain.componentOptics),createTransformers:e=>n(p,y,e),navigationStates:s.navigation?.navigationStates??[],viewStates:s.navigation?.viewStates??[],toolStates:s.navigation?.toolStates??[],exportStates:s.navigation?.exportStates??[],handlers:m,handlerHashes:d,elements:c,elementHashes:l,appLoader:s.ui?.appLoader??"universal",preview:s.ui?.preview??"auto",alwaysExpand:s.ui?.alwaysExpand??!1,theme:s.ui?.theme??{},assistant:s.assistant??null,deploymentQueryDisabled:s.resources?.deploymentQueryDisabled??!1,prefetchTextureUrls:s.resources?.prefetchTextureUrls??[],modelVersion:s.domain.domainFactory.modelVersion},admin:{factory:s.adminDomain.domainFactory,modelVersion:s.adminDomain.domainFactory.modelVersion,aliasMap:s.adminDomain.domainFactory.context.aliasMap,entityReflections:s.adminDomain.domainFactory.context.entityReflections,$entityReflections:s.adminDomain.domainFactory.context.$entityReflections,expressions:s.adminDomain.domainFactory.context.expressions,actions:s.adminDomain.domainFactory.context.actions,actionImplementations:s.adminDomain.domainFactory.context.actionImplementations,allowedRootEntityTypes:s.adminDomain.domainFactory.context.allowedRootEntityTypes,migrate:s.adminDomain.domainFactory.context.migrate,preset:r,componentOptics:i(s.adminDomain.componentOptics),navigationStates:s.adminNavigation?.navigationStates??[],viewStates:s.adminNavigation?.viewStates??[],handlers:m,handlerHashes:d,elements:c,elementHashes:l}}};
@@ -22,7 +22,7 @@ export declare const createSpecSelectors: (context: Context) => {
22
22
  selectAdminPreset: import("@salsita-ai/common/utils").Selector<SpecSelectorState, import("../../index.js").AnyProductPreset>;
23
23
  selectAdminModelVersion: import("@salsita-ai/common/utils").Selector<SpecSelectorState, number>;
24
24
  selectThemeOptions: import("@salsita-ai/common/utils").Selector<SpecSelectorState, import("@mui/material").ThemeOptions>;
25
- selectAssistant: import("@salsita-ai/common/utils").Selector<SpecSelectorState, import("../../index.js").AssistantManifest | null>;
25
+ selectAssistant: import("@salsita-ai/common/utils").Selector<SpecSelectorState, Required<import("../../index.js").AssistantManifest> | null>;
26
26
  selectConfiguratorFactory: import("@salsita-ai/common/utils").Selector<SpecSelectorState, import("../../index.js").AnyDomainFactory>;
27
27
  selectAdminFactory: import("@salsita-ai/common/utils").Selector<SpecSelectorState, import("../../index.js").AnyDomainFactory>;
28
28
  selectConfiguratorComponentOptics: import("@salsita-ai/common/utils").Selector<SpecSelectorState, readonly import("../../index.js").AnyDomainComponentOptic[]>;
@@ -65,7 +65,7 @@ export declare const createSpecSelectors: (context: Context) => {
65
65
  getAdminPreset: () => import("../../index.js").AnyProductPreset;
66
66
  getAdminModelVersion: () => number;
67
67
  getThemeOptions: () => import("@mui/material").ThemeOptions;
68
- getAssistant: () => import("../../index.js").AssistantManifest | null;
68
+ getAssistant: () => Required<import("../../index.js").AssistantManifest> | null;
69
69
  getConfiguratorFactory: () => import("../../index.js").AnyDomainFactory;
70
70
  getAdminFactory: () => import("../../index.js").AnyDomainFactory;
71
71
  getConfiguratorComponentOptics: () => readonly import("../../index.js").AnyDomainComponentOptic[];
@@ -1 +1 @@
1
- import{createSelector as e}from"@salsita-ai/common/utils";import{systemElementRegistry as t}from"../../application/element-registration.js";export const createSpecSelectors=n=>{let{getState:a}=n,s=e.withTypes(),r=s([s.leaf(e=>e.spec)],e=>e),o=s([r],e=>e.version),l=s([r],e=>e.baseResourcesUrl),i=s([r],e=>e.configurator),g=s([r],e=>e.dataConfig),m=s([r],e=>e.chunks),p=s([r],e=>e.publishedDataHash),d=s([r],e=>e.initialPublishedData),c=s([r],e=>e.canCreate),u=s([r],e=>e.enableAdminRelease),y=s([r],e=>e.textLanguages),h=s([i],e=>e.modelVersion),f=s([r],e=>e.admin),C=s([f],e=>e.preset),A=s([f],e=>e.modelVersion),E=s([i],e=>e.theme),b=s([i],e=>e.assistant),H=s([i],e=>e.factory),x=s([f],e=>e.factory),D=s([i],e=>e.componentOptics),P=s([f],e=>e.componentOptics),S=s([i],e=>e.appLoader),w=s([i],e=>e.preview),O=s([i],e=>e.alwaysExpand),T=s([i],e=>e.presets),V=s([i],e=>e.deploymentQueryDisabled),L=s([i],e=>e.prefetchTextureUrls),R=s([i],e=>e.handlerHashes),U=s([i],e=>e.handlers),v=s([U,R],(e,t)=>({...(e=>{let t={},n={},a={};for(let s of e)"phoenix"===s.type&&(t[s.name]=s.handler),"system"===s.type&&(n[s.name]=s.handler),"system-async"===s.type&&(a[s.name]=s.handler);return{handlers:t,systemHandlers:n,systemAsyncHandlers:a}})(e),hashes:t})),k=s([i],e=>e.elementHashes),F=s([i],e=>e.elements),M=s([F,k],(e,n)=>({...(e=>{let n={},a={};for(let t of e)"layout"===t.type&&(n[t.name]=t.element),"entity"===t.type&&(a[t.name]=t.element);return{entityElements:{...t.entityElements,...a},layoutElements:{...t.layoutElements,...n}}})(e),hashes:n}));return{selectSpec:r,selectVersion:o,selectBaseResourcesUrl:l,selectConfiguratorSpec:i,selectConfiguratorModelVersion:h,selectAdminSpec:f,selectAdminPreset:C,selectAdminModelVersion:A,selectThemeOptions:E,selectAssistant:b,selectConfiguratorFactory:H,selectAdminFactory:x,selectConfiguratorComponentOptics:D,selectAdminComponentOptics:P,selectAppLoader:S,selectPreview:w,selectAlwaysExpand:O,selectPresetSeed:T,selectDeploymentQueryDisabled:V,selectPrefetchTextureUrls:L,selectTextLanguages:y,selectHandlerHashes:R,selectHandlers:U,selectHandlerSlots:v,selectElementHashes:k,selectElements:F,selectElementSlots:M,selectDataConfig:g,selectChunks:m,selectPublishedDataHash:p,selectInitialPublishedData:d,selectCanCreate:c,selectEnableAdminRelease:u,getVersion:()=>o(a()),getBaseResourcesUrl:()=>l(a()),getConfiguratorSpec:()=>i(a()),getConfiguratorModelVersion:()=>h(a()),getAdminSpec:()=>f(a()),getAdminPreset:()=>C(a()),getAdminModelVersion:()=>A(a()),getThemeOptions:()=>E(a()),getAssistant:()=>b(a()),getConfiguratorFactory:()=>H(a()),getAdminFactory:()=>x(a()),getConfiguratorComponentOptics:()=>D(a()),getAdminComponentOptics:()=>P(a()),getAppLoader:()=>S(a()),getPreview:()=>w(a()),getAlwaysExpand:()=>O(a()),getPresetSeed:()=>T(a()),getDeploymentQueryDisabled:()=>V(a()),getPrefetchTextureUrls:()=>L(a()),getTextLanguages:()=>y(a()),getHandlerHashes:()=>R(a()),getHandlers:()=>U(a()),getHandlerSlots:()=>v(a()),getElementHashes:()=>k(a()),getElements:()=>F(a()),getElementSlots:()=>M(a()),getDataConfig:()=>g(a()),getChunks:()=>m(a()),getPublishedDataHash:()=>p(a()),getInitialPublishedData:()=>d(a()),getCanCreate:()=>c(a()),getEnableAdminRelease:()=>u(a())}};
1
+ import{createSelector as e}from"@salsita-ai/common/utils";import{buildAssistantManifest as t}from"../../application/assistant/index.js";import{systemElementRegistry as n}from"../../application/element-registration.js";export const createSpecSelectors=a=>{let{getState:s}=a,r=e.withTypes(),o=r([r.leaf(e=>e.spec)],e=>e),l=r([o],e=>e.version),i=r([o],e=>e.baseResourcesUrl),m=r([o],e=>e.configurator),g=r([o],e=>e.dataConfig),p=r([o],e=>e.chunks),d=r([o],e=>e.publishedDataHash),c=r([o],e=>e.initialPublishedData),u=r([o],e=>e.canCreate),y=r([o],e=>e.enableAdminRelease),h=r([o],e=>e.textLanguages),f=r([m],e=>e.modelVersion),C=r([o],e=>e.admin),A=r([C],e=>e.preset),E=r([C],e=>e.modelVersion),b=r([m],e=>e.theme),x=r([m],e=>e.assistant),H=r([x],e=>e?t(e):null),D=r([m],e=>e.factory),P=r([C],e=>e.factory),S=r([m],e=>e.componentOptics),w=r([C],e=>e.componentOptics),O=r([m],e=>e.appLoader),T=r([m],e=>e.preview),V=r([m],e=>e.alwaysExpand),L=r([m],e=>e.presets),R=r([m],e=>e.deploymentQueryDisabled),U=r([m],e=>e.prefetchTextureUrls),v=r([m],e=>e.handlerHashes),j=r([m],e=>e.handlers),k=r([j,v],(e,t)=>({...(e=>{let t={},n={},a={};for(let s of e)"phoenix"===s.type&&(t[s.name]=s.handler),"system"===s.type&&(n[s.name]=s.handler),"system-async"===s.type&&(a[s.name]=s.handler);return{handlers:t,systemHandlers:n,systemAsyncHandlers:a}})(e),hashes:t})),F=r([m],e=>e.elementHashes),M=r([m],e=>e.elements),Q=r([M,F],(e,t)=>({...(e=>{let t={},a={};for(let n of e)"layout"===n.type&&(t[n.name]=n.element),"entity"===n.type&&(a[n.name]=n.element);return{entityElements:{...n.entityElements,...a},layoutElements:{...n.layoutElements,...t}}})(e),hashes:t}));return{selectSpec:o,selectVersion:l,selectBaseResourcesUrl:i,selectConfiguratorSpec:m,selectConfiguratorModelVersion:f,selectAdminSpec:C,selectAdminPreset:A,selectAdminModelVersion:E,selectThemeOptions:b,selectAssistant:H,selectConfiguratorFactory:D,selectAdminFactory:P,selectConfiguratorComponentOptics:S,selectAdminComponentOptics:w,selectAppLoader:O,selectPreview:T,selectAlwaysExpand:V,selectPresetSeed:L,selectDeploymentQueryDisabled:R,selectPrefetchTextureUrls:U,selectTextLanguages:h,selectHandlerHashes:v,selectHandlers:j,selectHandlerSlots:k,selectElementHashes:F,selectElements:M,selectElementSlots:Q,selectDataConfig:g,selectChunks:p,selectPublishedDataHash:d,selectInitialPublishedData:c,selectCanCreate:u,selectEnableAdminRelease:y,getVersion:()=>l(s()),getBaseResourcesUrl:()=>i(s()),getConfiguratorSpec:()=>m(s()),getConfiguratorModelVersion:()=>f(s()),getAdminSpec:()=>C(s()),getAdminPreset:()=>A(s()),getAdminModelVersion:()=>E(s()),getThemeOptions:()=>b(s()),getAssistant:()=>H(s()),getConfiguratorFactory:()=>D(s()),getAdminFactory:()=>P(s()),getConfiguratorComponentOptics:()=>S(s()),getAdminComponentOptics:()=>w(s()),getAppLoader:()=>O(s()),getPreview:()=>T(s()),getAlwaysExpand:()=>V(s()),getPresetSeed:()=>L(s()),getDeploymentQueryDisabled:()=>R(s()),getPrefetchTextureUrls:()=>U(s()),getTextLanguages:()=>h(s()),getHandlerHashes:()=>v(s()),getHandlers:()=>j(s()),getHandlerSlots:()=>k(s()),getElementHashes:()=>F(s()),getElements:()=>M(s()),getElementSlots:()=>Q(s()),getDataConfig:()=>g(s()),getChunks:()=>p(s()),getPublishedDataHash:()=>d(s()),getInitialPublishedData:()=>c(s()),getCanCreate:()=>u(s()),getEnableAdminRelease:()=>y(s())}};
@@ -1,8 +1,7 @@
1
1
  import type { ThemeOptions } from '@mui/material';
2
2
  import type { SessionRole } from '@salsita-ai/contracts/api';
3
- import type { AssistantManifest, ChunksSpec, DataSpec, ElementRegistration, HandlerRegistration } from '../../application/index.js';
4
- import type { AnyDomainComponentOptic } from '../../components/index.js';
5
- import type { ActionDefinitions, Any$EntityReflections, AnyActionImplementations, AnyAliasMap, AnyAllowedRootEntityTypes, AnyDomainFactory, AnyEntityReflections, AnyExpressions, AnyProductPreset, DomainEntity, MigrateFunction } from '../../core/index.js';
3
+ import type { AssistantResolvedManifest, ChunksSpec, DataSpec, ElementRegistration, HandlerRegistration } from '../../application/index.js';
4
+ import type { ActionDefinitions, Any$EntityReflections, AnyActionImplementations, AnyAliasMap, AnyAllowedRootEntityTypes, AnyDomainComponentOptic, AnyDomainFactory, AnyEntityReflections, AnyExpressions, AnyProductPreset, DomainEntity, MigrateFunction } from '../../core/index.js';
6
5
  import type { AnyCreateTransformersFactory } from '../../domain-context/store-system/store-system.js';
7
6
  export interface ApplicationConfiguratorSpec {
8
7
  readonly modelVersion: number;
@@ -46,10 +45,10 @@ export interface ApplicationConfiguratorSpec {
46
45
  readonly alwaysExpand: boolean;
47
46
  readonly theme: ThemeOptions;
48
47
  /**
49
- * Experimental assistant manifest with its generated GraphQL SDL, or `null` when the application
48
+ * Resolved assistant manifest used to rebuild GraphQL SDL, or `null` when the application
50
49
  * spec declares no `assistant` section. Replaced by editor hot reload when the section changes.
51
50
  */
52
- readonly assistant: AssistantManifest | null;
51
+ readonly assistant: AssistantResolvedManifest | null;
53
52
  /**
54
53
  * When true, resource urls are not suffixed with the `?did=<deploymentId>` cache-busting
55
54
  * query — useful for demos serving local blob urls.
@@ -1,36 +1,5 @@
1
1
  export * from './core/index.js';
2
- export { createActionFactory } from './actions/action-factory.js';
3
- export { type ActionImplementationConflicts, findActionImplementationConflicts, } from './actions/prepare-action-implementations.js';
4
- export { createConstantExpressionFactory } from './expressions/constant-expressions.js';
5
- export { createCustomExpressionFactory } from './expressions/custom-expression.js';
6
- export { createCustomInvariantFactory, type StaticallyDefinedViolations } from './invariants/custom-invariants.js';
7
- export { InvariantBuilder } from './invariants/invariants.js';
8
- export type { AliasedInvariants, Invariant } from './invariants/invariants.js';
9
- export type { Violation, ViolationSeverity, ViolationTypesOf$Entity, EntityViolation } from './invariants/violation.js';
10
- export { compareSeverity } from './invariants/violation.js';
11
- export { violationsComponent, type ViolationComponent, type ViolationComponentState, } from './invariants/violation-component.js';
12
- export { createRelationFactory, type Relation } from './relations/relation-factory.js';
13
- export { attachMultipleReferenceComponent, attachSingleReferenceComponent, referenceComponent, type ReferenceComponent, type ReferenceComponentState, } from './relations/reference-component.js';
14
- export { composedOfComponent, type ComposedOfComponentState, type ComposedOfComponent, } from './relations/composed-of.js';
15
- export { createSingleReferenceRead, createSingleReferenceWrite, createMultipleReferenceRead, createMultipleReferenceWrite, createSingleCompositionRead, createMultipleCompositionRead, createEmptyWrite, } from './relations/component-factories.js';
16
- export { systemVirtualEntityId } from './components/system-virtual-entity.js';
17
- export { navigationStateComponent, isNavigationComponentSnapshot, isSystemNavigationComponentSnapshot, type NavigationStateComponent, type NavigationStateComponentState, } from './components/navigation-state-component.js';
18
- export { hoverStateComponent, isHoverStateComponentSnapshot, isSystemHoverStateComponentSnapshot, type HoverStateComponent, type HoverStateComponentState, } from './components/hover-state-component.js';
19
- export { selectionStateComponent, isSelectionComponentSnapshot, isSystemSelectionComponentSnapshot, type SelectionStateComponent, type SelectionStateComponentState, } from './components/selection-state-component.js';
20
- export { viewStateComponent, isViewComponentSnapshot, isSystemViewComponentSnapshot, type ViewStateComponent, type ViewStateComponentState, } from './components/view-state-component.js';
21
- export { toolStateComponent, isToolStateComponentSnapshot, isSystemToolStateComponentSnapshot, type ToolStateComponent, type ToolStateComponentState, } from './components/tool-state-component.js';
22
- export { debugStateComponent, isDebugStateComponentSnapshot, isSystemDebugStateComponentSnapshot, type DebugStateComponent, type DebugStateComponentState, } from './components/debug-state-component.js';
23
- export { fullscreenStateComponent, isFullscreenStateComponentSnapshot, isSystemFullscreenStateComponentSnapshot, type FullscreenStateComponent, type FullscreenStateComponentState, } from './components/fullscreen-state-component.js';
24
- export { dragStateComponent, isDragStateComponentSnapshot, isSystemDragStateComponentSnapshot, type DragStateComponent, type DragStateComponentState, } from './components/drag-state-component.js';
25
- export { viewportStateComponent, isViewportStateComponentSnapshot, isSystemViewportStateComponentSnapshot, VIEWPORTS, type Viewport, type ViewportStateComponent, type ViewportStateComponentState, } from './components/viewport-state-component.js';
26
- export { type ComponentSystemFilterState, type ComponentSystemFilterProps, ComponentSystemFilterPropsSchema, getComponentSystemFilterState, CombinedComponentFilterSchema, type GradualComponentSystemFilter, type FilterMismatchReason, type IdOrWithId, } from './components/system-component-filter.js';
27
- export { ComponentSystemFilterSchema, type ComponentSystemFilter, type DeclarativeComponentSystemFilter, } from './components/legacy-filter.js';
28
- export type { OneComponentFilter, ManyComponentFilter, ComponentFilter, FilteredOutComponentSnapshot, FilteredOutFilterContext, } from './components/component-reader-types.js';
29
- export { DomainComponentOpticBuilder, type AnyDomainComponentOptic, type DomainComponentOptic, } from './components/domain-component-optic.js';
30
- export { groupComponentsByEntityIdAndName, isEqualGroupedComponentSnapshots, type GroupedComponentSnapshots, } from './components/group-components-by-entity-id-and-name.js';
31
- export { SystemComponentBuilder } from './components/system-component-builder.js';
32
- export { type DataUpdate, type StateUpdate, type ComponentModification, isComponentModificationOfType, type DomainEntityCreation, type EntityDeletion, type DomainEntityReplacement, type DomainEntityModification, type EphemeralRecordCreation, type EphemeralRecordDeletion, type EphemeralRecordModification, type DomainEntityStateDelta, systemUpdateFactory, type UpdateFactory, createUpdateFactory, } from './components/updates.js';
33
- export { DomainBuilder, type AliasedExpressions } from './domain-builder.js';
2
+ export { DomainBuilder } from './domain-builder.js';
34
3
  export { memoEval, isMemoizedArray, isMemoizedObject, type MemoizedArray, type MemoizedObject, } from './utils/memo-eval.js';
35
4
  export { cloneEvalCache, getEvalCache, setEvalCache, type EvalCacheToken, createEvalCacheToken, } from './utils/eval-cache.js';
36
5
  export { areProfilerLabelsEnabled, setProfilerLabelsEnabled } from './utils/profiler-label.js';
@@ -41,6 +10,7 @@ export * from './sketching/index.js';
41
10
  export * from './projections/index.js';
42
11
  export * from './admin-domain/index.js';
43
12
  export * from './application/index.js';
13
+ export { type ProjectModule, resolveActionModules, resolveExpressionModules } from './project-modules/index.js';
44
14
  export * from './scene/index.js';
45
15
  export { getAllPhxDefinitions } from './system-definitions.js';
46
16
  export { availableSystemComponents, componentsByName } from './available-system-components.js';
@@ -1 +1 @@
1
- export*from"./core/index.js";export{createActionFactory}from"./actions/action-factory.js";export{findActionImplementationConflicts}from"./actions/prepare-action-implementations.js";export{createConstantExpressionFactory}from"./expressions/constant-expressions.js";export{createCustomExpressionFactory}from"./expressions/custom-expression.js";export{createCustomInvariantFactory}from"./invariants/custom-invariants.js";export{InvariantBuilder}from"./invariants/invariants.js";export{compareSeverity}from"./invariants/violation.js";export{violationsComponent}from"./invariants/violation-component.js";export{createRelationFactory}from"./relations/relation-factory.js";export{attachMultipleReferenceComponent,attachSingleReferenceComponent,referenceComponent}from"./relations/reference-component.js";export{composedOfComponent}from"./relations/composed-of.js";export{createSingleReferenceRead,createSingleReferenceWrite,createMultipleReferenceRead,createMultipleReferenceWrite,createSingleCompositionRead,createMultipleCompositionRead,createEmptyWrite}from"./relations/component-factories.js";export{systemVirtualEntityId}from"./components/system-virtual-entity.js";export{navigationStateComponent,isNavigationComponentSnapshot,isSystemNavigationComponentSnapshot}from"./components/navigation-state-component.js";export{hoverStateComponent,isHoverStateComponentSnapshot,isSystemHoverStateComponentSnapshot}from"./components/hover-state-component.js";export{selectionStateComponent,isSelectionComponentSnapshot,isSystemSelectionComponentSnapshot}from"./components/selection-state-component.js";export{viewStateComponent,isViewComponentSnapshot,isSystemViewComponentSnapshot}from"./components/view-state-component.js";export{toolStateComponent,isToolStateComponentSnapshot,isSystemToolStateComponentSnapshot}from"./components/tool-state-component.js";export{debugStateComponent,isDebugStateComponentSnapshot,isSystemDebugStateComponentSnapshot}from"./components/debug-state-component.js";export{fullscreenStateComponent,isFullscreenStateComponentSnapshot,isSystemFullscreenStateComponentSnapshot}from"./components/fullscreen-state-component.js";export{dragStateComponent,isDragStateComponentSnapshot,isSystemDragStateComponentSnapshot}from"./components/drag-state-component.js";export{viewportStateComponent,isViewportStateComponentSnapshot,isSystemViewportStateComponentSnapshot,VIEWPORTS}from"./components/viewport-state-component.js";export{ComponentSystemFilterPropsSchema,getComponentSystemFilterState,CombinedComponentFilterSchema}from"./components/system-component-filter.js";export{ComponentSystemFilterSchema}from"./components/legacy-filter.js";export{DomainComponentOpticBuilder}from"./components/domain-component-optic.js";export{groupComponentsByEntityIdAndName,isEqualGroupedComponentSnapshots}from"./components/group-components-by-entity-id-and-name.js";export{SystemComponentBuilder}from"./components/system-component-builder.js";export{isComponentModificationOfType,systemUpdateFactory,createUpdateFactory}from"./components/updates.js";export{DomainBuilder}from"./domain-builder.js";export{memoEval,isMemoizedArray,isMemoizedObject}from"./utils/memo-eval.js";export{cloneEvalCache,getEvalCache,setEvalCache,createEvalCacheToken}from"./utils/eval-cache.js";export{areProfilerLabelsEnabled,setProfilerLabelsEnabled}from"./utils/profiler-label.js";export*from"./dimensions/index.js";export*from"./domain-context/index.js";export*from"./system-components/index.js";export*from"./sketching/index.js";export*from"./projections/index.js";export*from"./admin-domain/index.js";export*from"./application/index.js";export*from"./scene/index.js";export{getAllPhxDefinitions}from"./system-definitions.js";export{availableSystemComponents,componentsByName}from"./available-system-components.js";export*from"./mocks/index.js";export*from"./domain-runtime/index.js";
1
+ export*from"./core/index.js";export{DomainBuilder}from"./domain-builder.js";export{memoEval,isMemoizedArray,isMemoizedObject}from"./utils/memo-eval.js";export{cloneEvalCache,getEvalCache,setEvalCache,createEvalCacheToken}from"./utils/eval-cache.js";export{areProfilerLabelsEnabled,setProfilerLabelsEnabled}from"./utils/profiler-label.js";export*from"./dimensions/index.js";export*from"./domain-context/index.js";export*from"./system-components/index.js";export*from"./sketching/index.js";export*from"./projections/index.js";export*from"./admin-domain/index.js";export*from"./application/index.js";export{resolveActionModules,resolveExpressionModules}from"./project-modules/index.js";export*from"./scene/index.js";export{getAllPhxDefinitions}from"./system-definitions.js";export{availableSystemComponents,componentsByName}from"./available-system-components.js";export*from"./mocks/index.js";export*from"./domain-runtime/index.js";
@@ -15,7 +15,7 @@ import type { RegistrableTransformer } from '../domain-context/index.js';
15
15
  *
16
16
  * Contributing no extension systems is the same shape webhook and finalize hosts run in.
17
17
  */
18
- export declare const createMockDomainRuntime: <ENTITIES extends DomainEntity<string>, ALLOWED_ROOT_ENTITIES extends ENTITIES, $MAP extends Record<ENTITIES['type'], $DomainEntity<ENTITIES>>, NAVIGATION_STATES extends string, VIEW_STATES extends string, TOOL_STATES extends string, EXPORT_STATES extends string, CHAT_CONTEXT extends Record<string, unknown>, PUBLISHED_DATA extends Record<string, unknown>, SESSION_DATA extends Record<string, unknown>, FRONTEND_DATA extends Record<string, unknown>, ADMIN_ENTITIES extends DomainEntity<string>, ADMIN_ALLOWED_ROOT_ENTITIES extends ADMIN_ENTITIES, ADMIN_$MAP extends Record<ADMIN_ENTITIES['type'], $DomainEntity<ADMIN_ENTITIES>>, ADMIN_NAVIGATION_STATES extends string, ADMIN_VIEW_STATES extends string>(_cfg: ApplicationConfig<ENTITIES, ALLOWED_ROOT_ENTITIES, $MAP, NAVIGATION_STATES, VIEW_STATES, TOOL_STATES, EXPORT_STATES, CHAT_CONTEXT, PUBLISHED_DATA, SESSION_DATA, FRONTEND_DATA, ADMIN_ENTITIES, ADMIN_ALLOWED_ROOT_ENTITIES, ADMIN_$MAP, ADMIN_NAVIGATION_STATES, ADMIN_VIEW_STATES>, mocks: {
18
+ export declare const createMockDomainRuntime: <ENTITIES extends DomainEntity<string>, ALLOWED_ROOT_ENTITIES extends ENTITIES, $MAP extends Record<ENTITIES['type'], $DomainEntity<ENTITIES>>, NAVIGATION_STATES extends string, VIEW_STATES extends string, TOOL_STATES extends string, EXPORT_STATES extends string, CHAT_CONTEXT extends Record<string, unknown>, PUBLISHED_DATA extends Record<string, unknown>, SESSION_DATA extends Record<string, unknown>, FRONTEND_DATA extends Record<string, unknown>, ADMIN_ENTITIES extends DomainEntity<string>, ADMIN_ALLOWED_ROOT_ENTITIES extends ADMIN_ENTITIES, ADMIN_$MAP extends Record<ADMIN_ENTITIES['type'], $DomainEntity<ADMIN_ENTITIES>>, ADMIN_NAVIGATION_STATES extends string, ADMIN_VIEW_STATES extends string>(config: ApplicationConfig<ENTITIES, ALLOWED_ROOT_ENTITIES, $MAP, NAVIGATION_STATES, VIEW_STATES, TOOL_STATES, EXPORT_STATES, CHAT_CONTEXT, PUBLISHED_DATA, SESSION_DATA, FRONTEND_DATA, ADMIN_ENTITIES, ADMIN_ALLOWED_ROOT_ENTITIES, ADMIN_$MAP, ADMIN_NAVIGATION_STATES, ADMIN_VIEW_STATES>, mocks: {
19
19
  frontendData: FRONTEND_DATA;
20
20
  publishedData: PUBLISHED_DATA;
21
21
  sessionData: SESSION_DATA;
@@ -57,7 +57,7 @@ export declare const createMockDomainRuntime: <ENTITIES extends DomainEntity<str
57
57
  selectAdminPreset: import("@salsita-ai/common/utils").Selector<import("../index.js").SpecSelectorState, import("../index.js").AnyProductPreset>;
58
58
  selectAdminModelVersion: import("@salsita-ai/common/utils").Selector<import("../index.js").SpecSelectorState, number>;
59
59
  selectThemeOptions: import("@salsita-ai/common/utils").Selector<import("../index.js").SpecSelectorState, import("@mui/material").ThemeOptions>;
60
- selectAssistant: import("@salsita-ai/common/utils").Selector<import("../index.js").SpecSelectorState, import("../index.js").AssistantManifest | null>;
60
+ selectAssistant: import("@salsita-ai/common/utils").Selector<import("../index.js").SpecSelectorState, Required<import("../index.js").AssistantManifest> | null>;
61
61
  selectConfiguratorFactory: import("@salsita-ai/common/utils").Selector<import("../index.js").SpecSelectorState, import("../index.js").AnyDomainFactory>;
62
62
  selectAdminFactory: import("@salsita-ai/common/utils").Selector<import("../index.js").SpecSelectorState, import("../index.js").AnyDomainFactory>;
63
63
  selectConfiguratorComponentOptics: import("@salsita-ai/common/utils").Selector<import("../index.js").SpecSelectorState, readonly import("../index.js").AnyDomainComponentOptic[]>;
@@ -100,7 +100,7 @@ export declare const createMockDomainRuntime: <ENTITIES extends DomainEntity<str
100
100
  getAdminPreset: () => import("../index.js").AnyProductPreset;
101
101
  getAdminModelVersion: () => number;
102
102
  getThemeOptions: () => import("@mui/material").ThemeOptions;
103
- getAssistant: () => import("../index.js").AssistantManifest | null;
103
+ getAssistant: () => Required<import("../index.js").AssistantManifest> | null;
104
104
  getConfiguratorFactory: () => import("../index.js").AnyDomainFactory;
105
105
  getAdminFactory: () => import("../index.js").AnyDomainFactory;
106
106
  getConfiguratorComponentOptics: () => readonly import("../index.js").AnyDomainComponentOptic[];
@@ -1 +1 @@
1
- import{createDomainRuntime as o}from"../domain-runtime/index.js";import{createMockDomainRuntimeServices as e}from"./create-mock-domain-runtime-services.js";import{createMockSessionContext as t}from"./create-mock-session-context.js";export const createMockDomainRuntime=(i,a)=>{let{sessionData:n,mode:r,role:s}=a,c={...i,createTransformers:o=>a.transformers.map(e=>e.transformer.register(o,e.priority??1/0))},m=o({config:c,services:e()});return m.actions.sessionContext.setSessionContext(t(s,n)),m.actions.access.setConfiguratorAccessInfo({raw:"mock-access-token",viewMode:"read"===r,revisionId:void 0,configurationId:"mock"}),m.actions.domainData.setDomainData({publishedData:a.publishedData,frontendData:a.frontendData,backendData:a.backendData}),m.actions.loadedData.completeConfiguratorLoad({initialRevisionId:"mock-revision",initialEntities:a.entities,modelVersion:c.domain.domainFactory.modelVersion,rootEntityType:a.rootEntityType,schemaIdentity:c.domain.domainFactory}),m};
1
+ import{createDomainRuntime as o}from"../domain-runtime/index.js";import{createMockDomainRuntimeServices as t}from"./create-mock-domain-runtime-services.js";import{createMockSessionContext as e}from"./create-mock-session-context.js";export const createMockDomainRuntime=(a,i)=>{let{sessionData:n,mode:r,role:s}=i,c=o({config:a,services:t()}),m=c.getState().spec;return c.actions.spec.updateSpec({...m,configurator:{...m.configurator,createTransformers:o=>i.transformers.map(t=>t.transformer.register(o,t.priority??1/0))}}),c.actions.sessionContext.setSessionContext(e(s,n)),c.actions.access.setConfiguratorAccessInfo({raw:"mock-access-token",viewMode:"read"===r,revisionId:void 0,configurationId:"mock"}),c.actions.domainData.setDomainData({publishedData:i.publishedData,frontendData:i.frontendData,backendData:i.backendData}),c.actions.loadedData.completeConfiguratorLoad({initialRevisionId:"mock-revision",initialEntities:i.entities,modelVersion:a.domain.domainFactory.modelVersion,rootEntityType:i.rootEntityType,schemaIdentity:a.domain.domainFactory}),c};
@@ -0,0 +1 @@
1
+ export { type ExpressionModule, type ProjectModule, type ProjectModuleContract, SHARED_FOLDER_HINT, createContractError, isRecord, resolveActionModules, resolveExpressionModules, resolveListModule, } from './project-modules.js';
@@ -0,0 +1 @@
1
+ export{SHARED_FOLDER_HINT,createContractError,isRecord,resolveActionModules,resolveExpressionModules,resolveListModule}from"./project-modules.js";
@@ -0,0 +1,41 @@
1
+ import type { AnonymousExpression, AnyActionImplementations } from '../core/index.js';
2
+ /**
3
+ * The default export of one file in a project convention folder (`src/elements/`, `src/handlers/`,
4
+ * `src/expressions/`, …), paired with the project-relative path it was imported from.
5
+ *
6
+ * Generated barrels and the editor's hot reload hand project code to the SDK in this shape, without
7
+ * inspecting it. Each folder's resolver then checks the export against the folder's contract, so an
8
+ * invalid file fails with an error naming it instead of an unrelated crash later.
9
+ */
10
+ export interface ProjectModule {
11
+ readonly origin: string;
12
+ readonly exports: unknown;
13
+ }
14
+ /** The expressions of one validated expression file, keyed by entity type or alias, then by expression name. */
15
+ export interface ExpressionModule {
16
+ readonly origin: string;
17
+ readonly expressions: Readonly<Record<string, Readonly<Record<string, AnyAnonymousExpression>>>>;
18
+ }
19
+ type AnyAnonymousExpression = AnonymousExpression<any, any, any, any, any, any, unknown>;
20
+ /** What a convention folder requires of its files, in the words used by the contract error. */
21
+ export interface ProjectModuleContract {
22
+ readonly expected: string;
23
+ readonly fix: string;
24
+ }
25
+ export declare const SHARED_FOLDER_HINT = "or move the file to an underscore-prefixed folder such as src/_shared/ when it is shared code";
26
+ export declare const isRecord: (value: unknown) => value is Record<string, unknown>;
27
+ export declare const createContractError: (origin: string, contract: ProjectModuleContract, received: unknown) => Error;
28
+ /**
29
+ * Checks a file of a folder whose contract is one item or an array of them, and returns its items.
30
+ * The first item that fails the check is the value the error reports.
31
+ */
32
+ export declare const resolveListModule: <Item>(module: ProjectModule, contract: ProjectModuleContract, isItem: (value: unknown) => value is Item) => readonly Item[];
33
+ /**
34
+ * Validates the `src/expressions/` files and rejects an expression that two files define for the
35
+ * same entity type. Merging stays with the caller, because the domain builder and the editor expand
36
+ * aliases at different points; within one file the builder's own duplicate check applies.
37
+ */
38
+ export declare const resolveExpressionModules: (modules: readonly ProjectModule[], aliasMap: Readonly<Record<string, readonly string[]>>) => readonly ExpressionModule[];
39
+ /** Validates the `src/actions/` files and merges their implementations by action name; a later file wins. */
40
+ export declare const resolveActionModules: (modules: readonly ProjectModule[]) => AnyActionImplementations;
41
+ export {};
@@ -0,0 +1 @@
1
+ export const SHARED_FOLDER_HINT="or move the file to an underscore-prefixed folder such as src/_shared/ when it is shared code";let e={expected:"an object of expressions keyed by entity type or alias, then by expression name",fix:`Create it with phx.domain.implementCustomExpressions({ ... }) (phx.domain.admin.implementCustomExpressions({ ... }) under src/admin/), ${SHARED_FOLDER_HINT}.`},t={expected:"an object of action implementations keyed by action name",fix:`Create it with phx.domain.implementActions({ ... }), ${SHARED_FOLDER_HINT}.`};export const isRecord=e=>"object"==typeof e&&null!==e&&!Array.isArray(e);export const createContractError=(e,t,r)=>Error(`Invalid default export in ${e}: expected ${t.expected}, but got ${(e=>{if(void 0===e)return"nothing (the file has no default export)";if(null===e)return"null";if("function"==typeof e)return e.name?`the function "${e.name}"`:"an anonymous function";if(Array.isArray(e))return`an array of ${e.length} item(s)`;if(isRecord(e)){let t=Object.keys(e);return t.length>0?`an object with the keys ${t.join(", ")}`:"an empty object"}return`the ${typeof e} ${JSON.stringify(e)}`})(r)}. Every file in this folder is loaded by convention, so each one must default-export that shape. ${t.fix}`);export const resolveListModule=(e,t,r)=>{let o=Array.isArray(e.exports)?e.exports:[e.exports],n=[];for(let i of o){if(!r(i))throw createContractError(e.origin,t,i);n.push(i)}return n};let r=e=>isRecord(e)&&"function"==typeof e.evaluate,o=e=>isRecord(e)&&Object.values(e).every(r),n=e=>"function"==typeof e;export const resolveExpressionModules=(t,r)=>{let n=new Map;return t.map(t=>{let i;if(i=t.exports,!(isRecord(i)&&Object.values(i).every(o)))throw createContractError(t.origin,e,t.exports);for(let[e,o]of Object.entries(t.exports))for(let i of r[e]??[e])for(let e of Object.keys(o)){let r=`${i}.${e}`,o=n.get(r);if(void 0!==o&&o!==t.origin)throw Error(`Duplicate expression ${r}: it is defined in both ${o} and ${t.origin}, which would make its value depend on file order. Keep one definition and remove the other.`);n.set(r,t.origin)}return{origin:t.origin,expressions:t.exports}})};export const resolveActionModules=e=>e.reduce((e,r)=>{let o;if(o=r.exports,!(isRecord(o)&&Object.values(o).every(n)))throw createContractError(r.origin,t,r.exports);return{...e,...r.exports}},{});
@@ -1,5 +1,5 @@
1
1
  import type { BlenderLight } from '@salsita-ai/contracts/webhook';
2
- import type { DomainEntity, DomainState } from '../../core/index.js';
2
+ import { type DomainEntity, type DomainState } from '../../core/index.js';
3
3
  import type { DomainContextSelectors } from '../../domain-runtime/domain-context/index.js';
4
4
  import type { DomainServicesSelectors } from '../../domain-runtime/domain-services/index.js';
5
5
  import type { BlenderCamera, BlenderImageConfig, BlenderImageSize, BlenderSceneConfig, BlenderSceneObject, SceneEntityNode } from './types.js';
@@ -1 +1 @@
1
- import{Matrix4 as e}from"three";import{groupComponentsByEntityIdAndName as t}from"../../components/group-components-by-entity-id-and-name.js";import{resolveMorphTargetInfluences as n}from"../../scene/index.js";import{customSceneEntityComponent as r,hiddenEntityComponent as i,materialOverridePropertyTransitionComponent as o,materialOverrideTransformerComponent as s,sceneEntityAmbientLightComponent as a,sceneEntityBoxObjectComponent as c,sceneEntityDirectionalLightComponent as l,sceneEntityLocalMaterialOverrideComponent as m,sceneEntityMaterialOverrideComponent as d,sceneEntityObjectClipComponent as g,sceneEntityObjectComponent as p,sceneEntityObjectDecalComponent as h,sceneEntityObjectGroupComponent as f,sceneEntityObjectLocalMaterialOverrideComponent as y,sceneEntityObjectMaterialOverrideComponent as j,sceneEntityObjectPropertiesComponent as x,sceneEntityObjectRemoteMaterialOverrideComponent as u,sceneEntityObjectTextDecalComponent as S,sceneEntityObjectTransformerComponent as v,sceneEntityObjectTransmissiveMaterialOverrideComponent as b,sceneEntityPointLightComponent as _,sceneEntityPropertiesComponent as E,sceneEntityRectAreaLightComponent as O,sceneEntityRemoteMaterialOverrideComponent as N,sceneEntityRemoteObjectComponent as B,sceneEntitySpotLightComponent as I,sceneEntityTransmissiveMaterialOverrideComponent as w}from"../../system-components/index.js";import{createSceneObjectGroupTransformResolver as $}from"../common/scene-object-transform.js";import{reduceMaterialOverrides as L}from"../material-overrides.js";import{projectBlenderCamera as C}from"./camera.js";import{getBlenderObjectMaterialOverrides as T}from"./entity-overrides.js";import{projectBlenderLight as D}from"./lights.js";import{projectBlenderMaterialOverrides as P}from"./materials.js";import{getBlenderObjectTransform as M}from"./transforms.js";let U=e=>"fileUrl"in e,R=(e,t)=>`${e}_${t}`;export class BlenderProjections{_context;constructor(e){this._context=e}_readEntityComponents=(e,n)=>t(this._context.selectors.getComponentReader().readManyComponents({entityIds:[e],componentTypes:[r,i,E,B,p,c,N,m,d,w,x,f,j,y,u,b,S,h,v,g,s,o,_,I,l,a,O]},n)).get(e);_traverse=(e,t,r)=>{let i=this._readEntityComponents(e.id,r),o=[...i?.sceneEntityRemoteObject??[],...i?.sceneEntityObject??[],...i?.sceneEntityBoxObject??[]],s={worldMatrix:this._context.selectors.getPositionProjections().getEntityWorldMatrix(e.id,r,null)},a=(i?.hiddenEntity?.length??0)>0,c={id:e.id,parent:t,customEntity:i?.customSceneEntity?.[0]?.state.node,isHidden:a,overrideComponents:i,properties:s,sceneObjects:o.map(r=>{let o=i?.sceneEntityObjectProperties?.find(e=>e.componentInstance.instanceName===r.componentInstance.instanceName)?.state,s=i?.sceneEntityObjectTextDecal?.filter(e=>e.componentInstance.instanceName===r.componentInstance.instanceName),a=i?.sceneEntityObjectDecal?.filter(e=>e.componentInstance.instanceName===r.componentInstance.instanceName),c=i?.sceneEntityObjectTransformer?.filter(e=>e.state.target===r.componentInstance.instanceName),l=n(o?.morphTargetInfluences,t=>this._context.domainServicesSelectors.getLogger().warn(`Morph target "${t}" on object ${r.componentInstance.instanceName} of entity ${e.id} has scaleZero equal to scaleOne, so its influence is undefined and is exported to Blender as 0. Give scaleZero and scaleOne different values.`)),m=i?.sceneEntityObjectClip?.filter(e=>e.state.target===r.componentInstance.instanceName),{overrides:d,transformations:g,transitions:p}=T(i??{},t,r.componentInstance.instanceName);return{instanceName:r.componentInstance.instanceName,object:r.state,properties:o,morphTargetInfluences:l,textDecals:s,decals:a,materialOverrides:d,materialOverrideTransformations:g,materialOverridePropertyTransitions:p,objectTransformations:c,clips:m}}),nodes:[]};for(let t of e.nodes){let e=this._traverse(t.node,c,r);c.nodes.push(e)}return c};getSceneEntityTree=e=>{let{root:t}=this._context.selectors.getCompositionProjections().getTree(e);return this._traverse(t,null,e)};_getBlenderObjects=(t,n)=>{let r=this._context.selectors.getDimensionSystem().getDataDistanceUnit(t),i=[],o=t=>{if(t.isHidden)return;if(null!=t.customEntity)return void this._context.domainServicesSelectors.getLogger().warn(`Custom entity ${t.id} is not supported in Blender.`);let n=t.overrideComponents?.materialOverrideTransformer??[];n.length>0&&this._context.domainServicesSelectors.getLogger().warn(`Entity ${t.id} has ${n.length} material override transformer(s), they are not applied in Blender. Set the final material values on the overrides active in the export state.`);let s=t.properties,a=$(t.overrideComponents?.sceneEntityObjectGroup?.map(e=>({instanceName:e.componentInstance.instanceName,state:e.state}))??[],r),c=new Map(t.sceneObjects.map(e=>[e,a(e.properties?.targetParentGroup,e.instanceName)]));for(let n of t.sceneObjects){let o=c.get(n);if(o?.visible===!1||n.properties?.visible===!1||n.properties?.rendered===!1)continue;if(!U(n.object)){this._context.domainServicesSelectors.getLogger().warn(`Object ${n.instanceName} is not a remote object, it will not be rendered in Blender.`);continue}n.textDecals&&n.textDecals.length>0&&this._context.domainServicesSelectors.getLogger().warn(`Object ${n.instanceName} of entity ${t.id} has text decals, they are not rendered in Blender.`),n.decals&&n.decals.length>0&&this._context.domainServicesSelectors.getLogger().warn(`Object ${n.instanceName} of entity ${t.id} has decals, they are not rendered in Blender.`),n.objectTransformations&&n.objectTransformations.length>0&&this._context.domainServicesSelectors.getLogger().warn(`Object ${n.instanceName} of entity ${t.id} has object transformers, they are not applied in Blender. Express the transform through sceneEntityObjectProperties or a sceneEntityObjectGroup active in the export state.`),n.clips&&n.clips.length>0&&this._context.domainServicesSelectors.getLogger().warn(`Object ${n.instanceName} of entity ${t.id} has animation clips, they are not played in Blender.`);let a=n.object,{position:l,scale:m,rotation:d}=M(o?new e().multiplyMatrices(s.worldMatrix,o.matrix):s.worldMatrix,n.properties,a.dimensionUnit??r,r),g=L(n.materialOverrides??[]),p=P({logger:this._context.domainServicesSelectors.getLogger(),materialOverrides:g,objectInstanceName:n.instanceName,transitions:n.materialOverridePropertyTransitions??[]});i.push({id:R(t.id,n.instanceName),objectName:a.objectName,position:l,scale:m,rotation:d,morphTargetInfluences:n.morphTargetInfluences,materialOverrides:p})}for(let e of t.nodes)o(e)};return o(n),i};getBlenderObjects=e=>this._getBlenderObjects(e,this.getSceneEntityTree(e));_prepareExportState=(e,t,n)=>{let r=this._context.selectors.getNavigationSystem().getExportUpdate(t,n),i=this._context.selectors.getStoreSystem().prepareStateEmission([r],e,"staged");if(!i.validity.valid)throw this._context.domainServicesSelectors.getLogger().error(`Setting an export state to ${t} for entity ${n} resulted in an invalid state! Check if there isn't a transformer corrupting the state as a reaction to setting the export state.`,i),Error("Exported state is invalid!");return i.state};_getBlenderLights=(e,t)=>{let n=this._context.selectors.getDimensionSystem().getDataDistanceUnit(e),r=[],i=e=>{if(e.isHidden||null!=e.customEntity)return;let t=e.overrideComponents,o=t?.sceneEntityAmbientLight??[];for(let i of(o.length>0&&this._context.domainServicesSelectors.getLogger().warn(`Entity "${e.id}" has ${o.length} ambient light component(s) which are not exported to Blender because Blender has no equivalent ambient light type. Use HDRI lighting or additional point/area lights instead.`),[...t?.sceneEntityPointLight??[],...t?.sceneEntitySpotLight??[],...t?.sceneEntityDirectionalLight??[],...t?.sceneEntityRectAreaLight??[]])){let t=D({entityId:e.id,entityWorldMatrix:e.properties.worldMatrix,snapshot:i,distanceUnit:n});null!=t?r.push(t):this._context.domainServicesSelectors.getLogger().warn(`Unknown light component type for ${i.componentInstance.instanceName}`)}for(let t of e.nodes)i(t)};return i(t),r};getBlenderLights=e=>this._getBlenderLights(e,this.getSceneEntityTree(e));getBlenderCamera=(e,t)=>C(e,t,{componentReader:this._context.selectors.getComponentReader(),dimensionSystem:this._context.selectors.getDimensionSystem(),positionProjections:this._context.selectors.getPositionProjections()});_getBlenderSceneConfigFromState=e=>{let t=this.getSceneEntityTree(e),n=this._getBlenderObjects(e,t),r=this._getBlenderLights(e,t);return{renderedEntities:n.map(e=>({id:e.id,type:"default",objectName:e.objectName,position:e.position,scale:e.scale,rotation:e.rotation,materialOverrides:e.materialOverrides,morphTargetInfluences:e.morphTargetInfluences})),lights:r.length>0?r:void 0}};getBlenderSceneConfig=(e,t,n)=>{let r=this._prepareExportState(e,t,n);return this._getBlenderSceneConfigFromState(r)};getBlenderImageConfig=(e,t,n,r)=>{let i=this._prepareExportState(e,t,n);return{width:r.width,height:r.height,...this._getBlenderSceneConfigFromState(i),camera:this.getBlenderCamera(i,r)}}}
1
+ import{Matrix4 as e}from"three";import{groupComponentsByEntityIdAndName as t}from"../../core/index.js";import{resolveMorphTargetInfluences as n}from"../../scene/index.js";import{customSceneEntityComponent as r,hiddenEntityComponent as i,materialOverridePropertyTransitionComponent as o,materialOverrideTransformerComponent as s,sceneEntityAmbientLightComponent as a,sceneEntityBoxObjectComponent as c,sceneEntityDirectionalLightComponent as l,sceneEntityLocalMaterialOverrideComponent as m,sceneEntityMaterialOverrideComponent as d,sceneEntityObjectClipComponent as g,sceneEntityObjectComponent as p,sceneEntityObjectDecalComponent as h,sceneEntityObjectGroupComponent as f,sceneEntityObjectLocalMaterialOverrideComponent as y,sceneEntityObjectMaterialOverrideComponent as j,sceneEntityObjectPropertiesComponent as x,sceneEntityObjectRemoteMaterialOverrideComponent as S,sceneEntityObjectTextDecalComponent as u,sceneEntityObjectTransformerComponent as v,sceneEntityObjectTransmissiveMaterialOverrideComponent as b,sceneEntityPointLightComponent as _,sceneEntityPropertiesComponent as E,sceneEntityRectAreaLightComponent as O,sceneEntityRemoteMaterialOverrideComponent as N,sceneEntityRemoteObjectComponent as B,sceneEntitySpotLightComponent as I,sceneEntityTransmissiveMaterialOverrideComponent as w}from"../../system-components/index.js";import{createSceneObjectGroupTransformResolver as $}from"../common/scene-object-transform.js";import{reduceMaterialOverrides as L}from"../material-overrides.js";import{projectBlenderCamera as C}from"./camera.js";import{getBlenderObjectMaterialOverrides as T}from"./entity-overrides.js";import{projectBlenderLight as D}from"./lights.js";import{projectBlenderMaterialOverrides as P}from"./materials.js";import{getBlenderObjectTransform as M}from"./transforms.js";let U=e=>"fileUrl"in e,R=(e,t)=>`${e}_${t}`;export class BlenderProjections{_context;constructor(e){this._context=e}_readEntityComponents=(e,n)=>t(this._context.selectors.getComponentReader().readManyComponents({entityIds:[e],componentTypes:[r,i,E,B,p,c,N,m,d,w,x,f,j,y,S,b,u,h,v,g,s,o,_,I,l,a,O]},n)).get(e);_traverse=(e,t,r)=>{let i=this._readEntityComponents(e.id,r),o=[...i?.sceneEntityRemoteObject??[],...i?.sceneEntityObject??[],...i?.sceneEntityBoxObject??[]],s={worldMatrix:this._context.selectors.getPositionProjections().getEntityWorldMatrix(e.id,r,null)},a=(i?.hiddenEntity?.length??0)>0,c={id:e.id,parent:t,customEntity:i?.customSceneEntity?.[0]?.state.node,isHidden:a,overrideComponents:i,properties:s,sceneObjects:o.map(r=>{let o=i?.sceneEntityObjectProperties?.find(e=>e.componentInstance.instanceName===r.componentInstance.instanceName)?.state,s=i?.sceneEntityObjectTextDecal?.filter(e=>e.componentInstance.instanceName===r.componentInstance.instanceName),a=i?.sceneEntityObjectDecal?.filter(e=>e.componentInstance.instanceName===r.componentInstance.instanceName),c=i?.sceneEntityObjectTransformer?.filter(e=>e.state.target===r.componentInstance.instanceName),l=n(o?.morphTargetInfluences,t=>this._context.domainServicesSelectors.getLogger().warn(`Morph target "${t}" on object ${r.componentInstance.instanceName} of entity ${e.id} has scaleZero equal to scaleOne, so its influence is undefined and is exported to Blender as 0. Give scaleZero and scaleOne different values.`)),m=i?.sceneEntityObjectClip?.filter(e=>e.state.target===r.componentInstance.instanceName),{overrides:d,transformations:g,transitions:p}=T(i??{},t,r.componentInstance.instanceName);return{instanceName:r.componentInstance.instanceName,object:r.state,properties:o,morphTargetInfluences:l,textDecals:s,decals:a,materialOverrides:d,materialOverrideTransformations:g,materialOverridePropertyTransitions:p,objectTransformations:c,clips:m}}),nodes:[]};for(let t of e.nodes){let e=this._traverse(t.node,c,r);c.nodes.push(e)}return c};getSceneEntityTree=e=>{let{root:t}=this._context.selectors.getCompositionProjections().getTree(e);return this._traverse(t,null,e)};_getBlenderObjects=(t,n)=>{let r=this._context.selectors.getDimensionSystem().getDataDistanceUnit(t),i=[],o=t=>{if(t.isHidden)return;if(null!=t.customEntity)return void this._context.domainServicesSelectors.getLogger().warn(`Custom entity ${t.id} is not supported in Blender.`);let n=t.overrideComponents?.materialOverrideTransformer??[];n.length>0&&this._context.domainServicesSelectors.getLogger().warn(`Entity ${t.id} has ${n.length} material override transformer(s), they are not applied in Blender. Set the final material values on the overrides active in the export state.`);let s=t.properties,a=$(t.overrideComponents?.sceneEntityObjectGroup?.map(e=>({instanceName:e.componentInstance.instanceName,state:e.state}))??[],r),c=new Map(t.sceneObjects.map(e=>[e,a(e.properties?.targetParentGroup,e.instanceName)]));for(let n of t.sceneObjects){let o=c.get(n);if(o?.visible===!1||n.properties?.visible===!1||n.properties?.rendered===!1)continue;if(!U(n.object)){this._context.domainServicesSelectors.getLogger().warn(`Object ${n.instanceName} is not a remote object, it will not be rendered in Blender.`);continue}n.textDecals&&n.textDecals.length>0&&this._context.domainServicesSelectors.getLogger().warn(`Object ${n.instanceName} of entity ${t.id} has text decals, they are not rendered in Blender.`),n.decals&&n.decals.length>0&&this._context.domainServicesSelectors.getLogger().warn(`Object ${n.instanceName} of entity ${t.id} has decals, they are not rendered in Blender.`),n.objectTransformations&&n.objectTransformations.length>0&&this._context.domainServicesSelectors.getLogger().warn(`Object ${n.instanceName} of entity ${t.id} has object transformers, they are not applied in Blender. Express the transform through sceneEntityObjectProperties or a sceneEntityObjectGroup active in the export state.`),n.clips&&n.clips.length>0&&this._context.domainServicesSelectors.getLogger().warn(`Object ${n.instanceName} of entity ${t.id} has animation clips, they are not played in Blender.`);let a=n.object,{position:l,scale:m,rotation:d}=M(o?new e().multiplyMatrices(s.worldMatrix,o.matrix):s.worldMatrix,n.properties,a.dimensionUnit??r,r),g=L(n.materialOverrides??[]),p=P({logger:this._context.domainServicesSelectors.getLogger(),materialOverrides:g,objectInstanceName:n.instanceName,transitions:n.materialOverridePropertyTransitions??[]});i.push({id:R(t.id,n.instanceName),objectName:a.objectName,position:l,scale:m,rotation:d,morphTargetInfluences:n.morphTargetInfluences,materialOverrides:p})}for(let e of t.nodes)o(e)};return o(n),i};getBlenderObjects=e=>this._getBlenderObjects(e,this.getSceneEntityTree(e));_prepareExportState=(e,t,n)=>{let r=this._context.selectors.getNavigationSystem().getExportUpdate(t,n),i=this._context.selectors.getStoreSystem().prepareStateEmission([r],e,"staged");if(!i.validity.valid)throw this._context.domainServicesSelectors.getLogger().error(`Setting an export state to ${t} for entity ${n} resulted in an invalid state! Check if there isn't a transformer corrupting the state as a reaction to setting the export state.`,i),Error("Exported state is invalid!");return i.state};_getBlenderLights=(e,t)=>{let n=this._context.selectors.getDimensionSystem().getDataDistanceUnit(e),r=[],i=e=>{if(e.isHidden||null!=e.customEntity)return;let t=e.overrideComponents,o=t?.sceneEntityAmbientLight??[];for(let i of(o.length>0&&this._context.domainServicesSelectors.getLogger().warn(`Entity "${e.id}" has ${o.length} ambient light component(s) which are not exported to Blender because Blender has no equivalent ambient light type. Use HDRI lighting or additional point/area lights instead.`),[...t?.sceneEntityPointLight??[],...t?.sceneEntitySpotLight??[],...t?.sceneEntityDirectionalLight??[],...t?.sceneEntityRectAreaLight??[]])){let t=D({entityId:e.id,entityWorldMatrix:e.properties.worldMatrix,snapshot:i,distanceUnit:n});null!=t?r.push(t):this._context.domainServicesSelectors.getLogger().warn(`Unknown light component type for ${i.componentInstance.instanceName}`)}for(let t of e.nodes)i(t)};return i(t),r};getBlenderLights=e=>this._getBlenderLights(e,this.getSceneEntityTree(e));getBlenderCamera=(e,t)=>C(e,t,{componentReader:this._context.selectors.getComponentReader(),dimensionSystem:this._context.selectors.getDimensionSystem(),positionProjections:this._context.selectors.getPositionProjections()});_getBlenderSceneConfigFromState=e=>{let t=this.getSceneEntityTree(e),n=this._getBlenderObjects(e,t),r=this._getBlenderLights(e,t);return{renderedEntities:n.map(e=>({id:e.id,type:"default",objectName:e.objectName,position:e.position,scale:e.scale,rotation:e.rotation,materialOverrides:e.materialOverrides,morphTargetInfluences:e.morphTargetInfluences})),lights:r.length>0?r:void 0}};getBlenderSceneConfig=(e,t,n)=>{let r=this._prepareExportState(e,t,n);return this._getBlenderSceneConfigFromState(r)};getBlenderImageConfig=(e,t,n,r)=>{let i=this._prepareExportState(e,t,n);return{width:r.width,height:r.height,...this._getBlenderSceneConfigFromState(i),camera:this.getBlenderCamera(i,r)}}}
@@ -1 +1 @@
1
- import{isEqualArray as t}from"@salsita-ai/common/utils";import{groupComponentsByEntityIdAndName as e}from"../components/group-components-by-entity-id-and-name.js";import{domainEntityTypeFromId as o,isVirtualEntityId as i}from"../core/index.js";import{composedOfComponent as n}from"../relations/composed-of.js";import{detailComponent as s,priceComponent as r}from"../system-components/index.js";export class CompositionCycleError extends Error{constructor(t){super(`Entity ${t} is part of a cycle or appears in two branches in the scene graph! This is not allowed, fix the domain relationships to have clear composition hierarchy!`)}}export class EntityNotPartOfCompositionTreeError extends Error{constructor(t){super(`Entity ${t} is not part of the composition tree. Add composition relations to the entity so every entity is descendant of the root entity!`)}}export class EntityCompositionNode{id;parent;nodes;constructor(t,e,o){this.id=t,this.parent=e,this.nodes=o}descendants=t=>(function* t(e,o){for(let i of e.nodes)o&&i.relation!==o||(yield i.node,yield*t(i.node))})(this,t);children=t=>(function*(t,e){for(let o of t.nodes)e&&o.relation!==e||(yield o.node)})(this,t);ancestors=()=>(function*(t){let e=t.parent;for(;e;)yield e,e=e.parent})(this)}export class CompositionProjections{_context;_weakCache=new WeakMap;_previousValue=null;constructor(t){this._context=t}_traverseComposition=(t,e,o,i,n,s)=>{let r=new EntityCompositionNode(t,e,[]);if(o.has(r))throw new CompositionCycleError(t);for(let e of(i.set(t,r),o.add(r),s??[]))if(e.componentInstance.entityId===t)for(let t of e.state.childEntityIds){let a=this._traverseComposition(t,r,o,i,n,s);r.nodes.push({node:a,relation:e.componentInstance.instanceName})}return r};getTree=e=>{let o=this._weakCache.get(e);if(void 0!==o)return o;let i=this._context.selectors.getComponentReader().readManyComponents({componentTypes:[n]},e);if(this._previousValue&&this._previousValue.rootEntityId===e.rootEntityId&&t(i,this._previousValue.components??[]))return this._weakCache.set(e,this._previousValue.value),this._previousValue.value;let s=new Map,r=this._traverseComposition(e.rootEntityId,null,new Set,s,e,i);for(let t of e.entities)if(void 0===s.get(t.id))throw new EntityNotPartOfCompositionTreeError(t.id);let a={map:s,root:r};return this._weakCache.set(e,a),this._previousValue={components:i,value:a,rootEntityId:e.rootEntityId},a};readBasicEntityInfo=(t,n)=>{let a=e(this._context.selectors.getComponentReader().readManyComponents({entityIds:[t],componentTypes:[s,r]},n)).get(t),l=i(t)?t.name:o(t);return{entityId:t,title:a?.detail?.[0]?.state.title??l,shortDescription:a?.detail?.[0]?.state.description,subtitle:a?.detail?.[0]?.state.subtitle,price:a?.price?.[0]?.state.price,thumbnailUrl:a?.detail?.[0]?.state.thumbnailUrl}}}
1
+ import{isEqualArray as t}from"@salsita-ai/common/utils";import{composedOfComponent as e,domainEntityTypeFromId as o,groupComponentsByEntityIdAndName as i,isVirtualEntityId as n}from"../core/index.js";import{detailComponent as s,priceComponent as r}from"../system-components/index.js";export class CompositionCycleError extends Error{constructor(t){super(`Entity ${t} is part of a cycle or appears in two branches in the scene graph! This is not allowed, fix the domain relationships to have clear composition hierarchy!`)}}export class EntityNotPartOfCompositionTreeError extends Error{constructor(t){super(`Entity ${t} is not part of the composition tree. Add composition relations to the entity so every entity is descendant of the root entity!`)}}export class EntityCompositionNode{id;parent;nodes;constructor(t,e,o){this.id=t,this.parent=e,this.nodes=o}descendants=t=>(function* t(e,o){for(let i of e.nodes)o&&i.relation!==o||(yield i.node,yield*t(i.node))})(this,t);children=t=>(function*(t,e){for(let o of t.nodes)e&&o.relation!==e||(yield o.node)})(this,t);ancestors=()=>(function*(t){let e=t.parent;for(;e;)yield e,e=e.parent})(this)}export class CompositionProjections{_context;_weakCache=new WeakMap;_previousValue=null;constructor(t){this._context=t}_traverseComposition=(t,e,o,i,n,s)=>{let r=new EntityCompositionNode(t,e,[]);if(o.has(r))throw new CompositionCycleError(t);for(let e of(i.set(t,r),o.add(r),s??[]))if(e.componentInstance.entityId===t)for(let t of e.state.childEntityIds){let a=this._traverseComposition(t,r,o,i,n,s);r.nodes.push({node:a,relation:e.componentInstance.instanceName})}return r};getTree=o=>{let i=this._weakCache.get(o);if(void 0!==i)return i;let n=this._context.selectors.getComponentReader().readManyComponents({componentTypes:[e]},o);if(this._previousValue&&this._previousValue.rootEntityId===o.rootEntityId&&t(n,this._previousValue.components??[]))return this._weakCache.set(o,this._previousValue.value),this._previousValue.value;let s=new Map,r=this._traverseComposition(o.rootEntityId,null,new Set,s,o,n);for(let t of o.entities)if(void 0===s.get(t.id))throw new EntityNotPartOfCompositionTreeError(t.id);let a={map:s,root:r};return this._weakCache.set(o,a),this._previousValue={components:n,value:a,rootEntityId:o.rootEntityId},a};readBasicEntityInfo=(t,e)=>{let a=i(this._context.selectors.getComponentReader().readManyComponents({entityIds:[t],componentTypes:[s,r]},e)).get(t),l=n(t)?t.name:o(t);return{entityId:t,title:a?.detail?.[0]?.state.title??l,shortDescription:a?.detail?.[0]?.state.description,subtitle:a?.detail?.[0]?.state.subtitle,price:a?.price?.[0]?.state.price,thumbnailUrl:a?.detail?.[0]?.state.thumbnailUrl}}}
@@ -1,5 +1,4 @@
1
- import type { DomainEntity, DomainEntityId } from '../core/model.js';
2
- import type { DomainState } from '../core/state.js';
1
+ import type { DomainEntity, DomainEntityId, DomainState } from '../core/index.js';
3
2
  import type { DomainContextSelectors } from '../domain-runtime/domain-context/index.js';
4
3
  /**
5
4
  * Constructor context of `ProjectedEntitiesProjections`. It carries no `selectors` member because
@@ -1,7 +1,6 @@
1
1
  import type { Matrix4 } from 'three';
2
2
  import { Vector3 } from 'three';
3
- import type { ComponentSnapshot } from '../core/component.js';
4
- import type { DomainEntity } from '../core/model.js';
3
+ import type { ComponentSnapshot, DomainEntity } from '../core/index.js';
5
4
  import type { SnapAxisComponent, SnapEdgeComponent, SnapPlaneComponent, SnapPointComponent } from '../system-components/index.js';
6
5
  /**
7
6
  * Common fields shared by all world-space snap primitives (points, edges, planes, axes).
@@ -1,6 +1,5 @@
1
1
  import { type Euler, Matrix4, Vector3 } from 'three';
2
- import type { ComponentSnapshot } from '../core/component.js';
3
- import type { DomainEntity } from '../core/model.js';
2
+ import type { ComponentSnapshot, DomainEntity } from '../core/index.js';
4
3
  import type { DimensionUnit } from '../dimensions/dimensions.js';
5
4
  import type { SnapAxisComponent, SnapEdgeComponent, SnapPlaneComponent, SnapPointComponent } from '../system-components/index.js';
6
5
  import type { SnapAxisComponentState } from '../system-components/snap-axis.js';
@@ -1,7 +1,6 @@
1
- import type { $DomainEntity, DomainEntity, DomainState } from '../core/index.js';
1
+ import { type $DomainEntity, type DomainEntity, type DomainState, type EntityViolation, type ViolationTypesOf$Entity } from '../core/index.js';
2
2
  import type { AngleDimensionViolation, DistanceDimensionViolation, GenericDimensionViolation } from '../domain-context/dimension-system/dimension-system.js';
3
3
  import type { DomainContextSelectors } from '../domain-runtime/domain-context/index.js';
4
- import type { EntityViolation, ViolationTypesOf$Entity } from '../invariants/violation.js';
5
4
  export type SystemViolation = AngleDimensionViolation | DistanceDimensionViolation | GenericDimensionViolation;
6
5
  export type StateValidationResult<ENTITIES extends DomainEntity<string>, VIOLATION_TYPE extends string> = {
7
6
  readonly valid: true;
@@ -1 +1 @@
1
- import{violationsComponent as t}from"../invariants/violation-component.js";import{compareSeverity as e}from"../invariants/violation.js";export class ValidationProjections{_context;constructor(t){this._context=t}validateState(o){let n=[],r=null;try{for(let i of(this._context.selectors.getDomain().validateExpressions(o),this._context.selectors.getComponentReader().readManyComponents({componentTypes:[t]},o)))i.state.violations.forEach(t=>{(null===r||0>e(t.severity,r))&&(r=t.severity),n.push({entityId:i.componentInstance.entityId,violation:t})});for(let{entityId:t,violation:i}of this._context.selectors.getDimensionSystem().validateState(o))(null===r||0>e(i.severity,r))&&(r=i.severity),n.push({entityId:t,violation:i});if(null===r)return{valid:!0,severity:null};if("fatal"===r||"fixable"===r)return{valid:!1,severity:r,entityViolations:n};return{valid:!0,severity:r,entityViolations:n}}catch(t){return{valid:!1,error:t instanceof Error?t:Error(`Unknown error occurred - ${String(t)}`),severity:"uncaught"}}}}
1
+ import{compareSeverity as t,violationsComponent as e}from"../core/index.js";export class ValidationProjections{_context;constructor(t){this._context=t}validateState(r){let o=[],n=null;try{for(let i of(this._context.selectors.getDomain().validateExpressions(r),this._context.selectors.getComponentReader().readManyComponents({componentTypes:[e]},r)))i.state.violations.forEach(e=>{(null===n||0>t(e.severity,n))&&(n=e.severity),o.push({entityId:i.componentInstance.entityId,violation:e})});for(let{entityId:e,violation:i}of this._context.selectors.getDimensionSystem().validateState(r))(null===n||0>t(i.severity,n))&&(n=i.severity),o.push({entityId:e,violation:i});if(null===n)return{valid:!0,severity:null};if("fatal"===n||"fixable"===n)return{valid:!1,severity:n,entityViolations:o};return{valid:!0,severity:n,entityViolations:o}}catch(t){return{valid:!1,error:t instanceof Error?t:Error(`Unknown error occurred - ${String(t)}`),severity:"uncaught"}}}}
@@ -1,5 +1,5 @@
1
1
  import type { ReactNode } from 'react';
2
- import { type DomainEntityId } from '../core/model.js';
2
+ import { type DomainEntityId } from '../core/index.js';
3
3
  import { type PhoenixEntityElement } from './phoenix-entity-elements/index.js';
4
4
  export type AdminSidebarComponentState = {
5
5
  /**
@@ -1 +1 @@
1
- import{SystemComponentBuilder as e}from"../components/system-component-builder.js";import{DomainEntityIdSchema as t}from"../core/model.js";import{ReactNodeSchema as i}from"./common/react-node-schema.js";import{PhoenixEntityElementSchema as o}from"./phoenix-entity-elements/index.js";export const adminSidebarComponent=e.component("adminSidebar").withState({type:"object",tsType:"AdminSidebarComponentState",import:[{module:"@salsita-ai/sdk/domain",member:"AdminSidebarComponentState"}],properties:{page:i,children:{type:"array",items:{$ref:"#/definitions/PhoenixEntityElement"}},title:{type:"string"},fallbackId:t},definitions:{PhoenixEntityElement:o},required:["title"],additionalProperties:!1}).build();
1
+ import{DomainEntityIdSchema as e,SystemComponentBuilder as t}from"../core/index.js";import{ReactNodeSchema as i}from"./common/react-node-schema.js";import{PhoenixEntityElementSchema as n}from"./phoenix-entity-elements/index.js";export const adminSidebarComponent=t.component("adminSidebar").withState({type:"object",tsType:"AdminSidebarComponentState",import:[{module:"@salsita-ai/sdk/domain",member:"AdminSidebarComponentState"}],properties:{page:i,children:{type:"array",items:{$ref:"#/definitions/PhoenixEntityElement"}},title:{type:"string"},fallbackId:e},definitions:{PhoenixEntityElement:n},required:["title"],additionalProperties:!1}).build();
@@ -1 +1 @@
1
- import{SystemComponentBuilder as n}from"../components/system-component-builder.js";import{isInstanceOfComponentType as o,isSnapshotOfComponentType as e}from"../core/index.js";import{AngleValueSchema as i}from"../dimensions/index.js";export const angleDimensionComponent=n.component("angleDimension").withState(i).withWritableKeys(["value"]).build();export const isAngleDimensionSnapshot=e(angleDimensionComponent);export const isAngleDimensionInstance=o(angleDimensionComponent);
1
+ import{SystemComponentBuilder as n,isInstanceOfComponentType as e,isSnapshotOfComponentType as o}from"../core/index.js";import{AngleValueSchema as i}from"../dimensions/index.js";export const angleDimensionComponent=n.component("angleDimension").withState(i).withWritableKeys(["value"]).build();export const isAngleDimensionSnapshot=o(angleDimensionComponent);export const isAngleDimensionInstance=e(angleDimensionComponent);
@@ -1,5 +1,5 @@
1
1
  import { type Localizable } from '@salsita-ai/common/utils';
2
- import { type ComponentSnapshot } from '../core/component.js';
2
+ import { type ComponentSnapshot } from '../core/index.js';
3
3
  import { type AngleIndicatorBaseState } from './common/index.js';
4
4
  export type AngleIndicatorComponentState = AngleIndicatorBaseState & {
5
5
  /**
@@ -1 +1 @@
1
- import{EnhancedLocalizableSchema as o}from"@salsita-ai/common/utils";import{SystemComponentBuilder as t}from"../components/system-component-builder.js";import{isSnapshotOfComponentType as e}from"../core/component.js";import{AngleIndicatorProperties as n}from"./common/index.js";export const angleIndicatorComponent=t.component("angleIndicator").withState({tsType:"AngleIndicatorComponentState",import:[{module:"@salsita-ai/sdk/domain",member:"AngleIndicatorComponentState"}],type:"object",properties:{...n,label:o,visible:{type:"boolean"},force:{type:"boolean"}},required:["positionX","positionY","positionZ","startAngle","sweepAngle"],additionalProperties:!1}).build();export const isAngleIndicatorSnapshot=e(angleIndicatorComponent);
1
+ import{EnhancedLocalizableSchema as o}from"@salsita-ai/common/utils";import{SystemComponentBuilder as t,isSnapshotOfComponentType as e}from"../core/index.js";import{AngleIndicatorProperties as n}from"./common/index.js";export const angleIndicatorComponent=t.component("angleIndicator").withState({tsType:"AngleIndicatorComponentState",import:[{module:"@salsita-ai/sdk/domain",member:"AngleIndicatorComponentState"}],type:"object",properties:{...n,label:o,visible:{type:"boolean"},force:{type:"boolean"}},required:["positionX","positionY","positionZ","startAngle","sweepAngle"],additionalProperties:!1}).build();export const isAngleIndicatorSnapshot=e(angleIndicatorComponent);
@@ -1,4 +1,4 @@
1
- import { type ComponentInstance, type ComponentSnapshot } from '../core/component.js';
1
+ import { type ComponentInstance, type ComponentSnapshot } from '../core/index.js';
2
2
  import { DimensionUnit, type UnitsConfig } from '../dimensions/index.js';
3
3
  export type ApplicationConfigComponentState = {
4
4
  readonly showCollisionWarnings?: boolean;