@salsita-ai/sdk 0.50.0-develop.be40f0cee8 → 0.50.0-develop.d6ed5efd42

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 (543) hide show
  1. package/dist/application-spec/generate-application/code/common/index.d.ts +1 -0
  2. package/dist/application-spec/generate-application/code/common/index.js +1 -1
  3. package/dist/application-spec/generate-application/code/common/project-module-list.d.ts +8 -0
  4. package/dist/application-spec/generate-application/code/common/project-module-list.js +3 -0
  5. package/dist/application-spec/generate-application/code/domain-runtime-files.js +1 -1
  6. package/dist/application-spec/generate-application/code/project-scaffolding.js +2 -2
  7. package/dist/application-spec/generate-application/code/templates/admin-domain-code.d.ts +1 -2
  8. package/dist/application-spec/generate-application/code/templates/admin-domain-code.js +6 -14
  9. package/dist/application-spec/generate-application/code/templates/admin-frontend-code.d.ts +1 -2
  10. package/dist/application-spec/generate-application/code/templates/admin-frontend-code.js +4 -4
  11. package/dist/application-spec/generate-application/code/templates/configurator-domain-code.d.ts +1 -2
  12. package/dist/application-spec/generate-application/code/templates/configurator-domain-code.js +7 -16
  13. package/dist/application-spec/generate-application/code/templates/configurator-frontend-code.d.ts +1 -2
  14. package/dist/application-spec/generate-application/code/templates/configurator-frontend-code.js +7 -9
  15. package/dist/application-spec/generate-application/code/templates/domain-spec/generate-assistant.d.ts +2 -2
  16. package/dist/application-spec/generate-application/code/templates/domain-spec/generate-assistant.js +1 -1
  17. package/dist/application-spec/generate-application/code/templates/domain-spec.js +4 -4
  18. package/dist/application-spec/generate-application/code/templates/domain.js +3 -3
  19. package/dist/application-spec/generate-application/code/templates/index.d.ts +1 -0
  20. package/dist/application-spec/generate-application/code/templates/index.js +1 -1
  21. package/dist/application-spec/generate-application/code/templates/skills/agents-md.js +1 -1
  22. package/dist/application-spec/generate-application/code/templates/skills/phoenix-cli-skill.js +1 -1
  23. package/dist/application-spec/generate-application/code/templates/skills/phoenix-create-configurator-skill.js +41 -13
  24. package/dist/application-spec/generate-application/code/templates/skills/phoenix-feedback-skill.js +1 -1
  25. package/dist/application-spec/generate-application/code/templates/skills/phoenix-review-skill.js +2 -2
  26. package/dist/application-spec/generate-application/code/templates/skills/phoenix-skill.js +1 -1
  27. package/dist/application-spec/generate-application/code/templates/skills/phoenix-variants-skill.d.ts +1 -0
  28. package/dist/application-spec/generate-application/code/templates/skills/phoenix-variants-skill.js +6 -0
  29. package/dist/application-spec/generate-application/code/templates/skills/sdk-content.d.ts +30 -3
  30. package/dist/application-spec/generate-application/code/templates/skills/sdk-content.js +19 -5
  31. package/dist/application-spec/generate-application/code/templates/webhook-builders.js +8 -4
  32. package/dist/application-spec/generate-application/runtime/sections/assistant-runtime.d.ts +4 -3
  33. package/dist/application-spec/generate-application/runtime/sections/assistant-runtime.js +1 -1
  34. package/dist/application-spec/parse-application-files/spec/sections/assistant/assistant-field-type.d.ts +3 -8
  35. package/dist/application-spec/parse-application-files/spec/sections/assistant/assistant-field-type.js +1 -1
  36. package/dist/application-spec/parse-application-files/spec/sections/assistant/assistant-schema.d.ts +9 -43
  37. package/dist/application-spec/parse-application-files/spec/sections/assistant/assistant-schema.js +1 -1
  38. package/dist/application-spec/parse-application-files/spec/sections/assistant/assistant-server-settings.d.ts +2 -2
  39. package/dist/application-spec/parse-application-files/spec/sections/assistant/assistant.d.ts +5 -21
  40. package/dist/client/phoenix-api.d.ts +58 -30
  41. package/dist/configurator/application-runtime/extensions/selectors.js +1 -1
  42. package/dist/configurator/application-runtime/extensions/systems/assistant-system/assistant-system.d.ts +158 -13
  43. package/dist/configurator/application-runtime/extensions/systems/assistant-system/assistant-system.js +1 -1
  44. package/dist/configurator/application-runtime/extensions/systems/assistant-system/change-recorder.d.ts +85 -0
  45. package/dist/configurator/application-runtime/extensions/systems/assistant-system/change-recorder.js +1 -0
  46. package/dist/configurator/application-runtime/extensions/systems/assistant-system/graphql-tools.d.ts +8 -3
  47. package/dist/configurator/application-runtime/extensions/systems/assistant-system/graphql-tools.js +1 -1
  48. package/dist/configurator/application-runtime/extensions/systems/graphql-system/entity-meta.d.ts +4 -0
  49. package/dist/configurator/application-runtime/extensions/systems/graphql-system/entity-meta.js +1 -1
  50. package/dist/configurator/application-runtime/extensions/systems/graphql-system/graphql-system.d.ts +16 -1
  51. package/dist/configurator/application-runtime/extensions/systems/graphql-system/graphql-system.js +1 -1
  52. package/dist/configurator/application-runtime/extensions/systems/graphql-system/side-effects.d.ts +9 -0
  53. package/dist/configurator/application-runtime/extensions/systems/graphql-system/side-effects.js +1 -0
  54. package/dist/configurator/application-runtime/extensions/systems/index.d.ts +1 -1
  55. package/dist/configurator/common/frontend-analytics.d.ts +21 -21
  56. package/dist/configurator/index.d.ts +0 -1
  57. package/dist/configurator/index.js +1 -1
  58. package/dist/configurator/pages/LoadedConfiguratorDetailPage.js +1 -1
  59. package/dist/configurator/scene/scene-analytics/scene-analytics.d.ts +2 -2
  60. package/dist/configurator/ui/assistant/AssistantChips.js +1 -1
  61. package/dist/configurator/ui/assistant/AssistantComposer.d.ts +1 -6
  62. package/dist/configurator/ui/assistant/AssistantComposer.js +1 -1
  63. package/dist/configurator/ui/assistant/AssistantPanel.js +1 -1
  64. package/dist/configurator/ui/assistant/AssistantThread.d.ts +1 -6
  65. package/dist/configurator/ui/assistant/AssistantThread.js +1 -1
  66. package/dist/configurator/ui/assistant/index.d.ts +1 -1
  67. package/dist/configurator/ui/assistant/index.js +1 -1
  68. package/dist/configurator/ui/assistant/thread-items.d.ts +1 -1
  69. package/dist/configurator/ui/assistant/tool-chip.d.ts +8 -1
  70. package/dist/configurator/ui/assistant/tool-chip.js +1 -1
  71. package/dist/configurator/ui/assistant/use-is-assistant-panel-open.d.ts +5 -0
  72. package/dist/configurator/ui/assistant/use-is-assistant-panel-open.js +1 -0
  73. package/dist/configurator/ui/configurator-layout/universal/DesktopLayout.js +2 -2
  74. package/dist/configurator/ui/configurator-layout/universal/Layout.js +1 -1
  75. package/dist/configurator/ui/configurator-layout/universal/MobileLayout.js +4 -4
  76. package/dist/configurator/ui/legacy/mobile-controls/MobileControls.d.ts +1 -1
  77. package/dist/configurator/ui/phoenix-layout-elements/AssistantToolbarButton.d.ts +2 -2
  78. package/dist/configurator/ui/phoenix-layout-elements/AssistantToolbarButton.js +1 -1
  79. package/dist/docs/complex-use-cases/filtered-controls-with-fix-dialog.mdx +84 -98
  80. package/dist/docs/complex-use-cases/navigation-reset-selection.mdx +18 -12
  81. package/dist/docs/index.json +1 -1
  82. package/dist/docs/layouts/custom-price.mdx +14 -16
  83. package/dist/docs/layouts/sidebar/tabs.mdx +24 -21
  84. package/dist/docs/layouts/toolbar.mdx +3 -1
  85. package/dist/docs/other-features/domain-actions.mdx +1 -1
  86. package/dist/docs/other-features/side-effects.mdx +68 -34
  87. package/dist/docs/other-features/transformers.mdx +1 -1
  88. package/dist/docs/phoenix/admin.mdx +9 -24
  89. package/dist/docs/phoenix/localization.mdx +3 -22
  90. package/dist/docs/phoenix/phoenix-cli.mdx +81 -2
  91. package/dist/docs/phoenix/project-structure.mdx +9 -2
  92. package/dist/docs/phoenix/sdk-builder-workflow.mdx +4 -3
  93. package/dist/docs/recipes-and-delete/recipe-hierarchy-selection.mdx +15 -13
  94. package/dist/docs/relations/hierarchy.mdx +13 -2
  95. package/dist/domain/actions/action-factory.d.ts +4 -4
  96. package/dist/domain/admin-domain/__generated/enhanced-model.d.ts +1 -1
  97. package/dist/domain/admin-domain/__generated/model/versions/v1.d.ts +1 -1
  98. package/dist/domain/admin-domain/__generated/model/versions/v2.d.ts +1 -1
  99. package/dist/domain/admin-domain/__generated/model/versions/v3.d.ts +1 -1
  100. package/dist/domain/admin-domain/__generated/model/versions/v4.d.ts +1 -1
  101. package/dist/domain/admin-domain/__generated/model/versions/v5.d.ts +1 -1
  102. package/dist/domain/admin-domain/__generated/model/versions/v6.d.ts +2 -2
  103. package/dist/domain/admin-domain/__generated/model/versions/v6.js +1 -1
  104. package/dist/domain/admin-domain/implementation/common-admin-expressions.d.ts +1 -3
  105. package/dist/domain/admin-domain/implementation/common-admin-migrations.d.ts +1 -1
  106. package/dist/domain/admin-domain/index.d.ts +1 -1
  107. package/dist/domain/application/admin-page-factories.d.ts +1 -1
  108. package/dist/domain/application/application-config.d.ts +25 -75
  109. package/dist/domain/application/assistant/assistant-manifest.d.ts +61 -0
  110. package/dist/domain/application/assistant/assistant-resolved-manifest.d.ts +95 -0
  111. package/dist/domain/application/assistant/assistant-value-type.d.ts +9 -0
  112. package/dist/domain/application/assistant/assistant-value-type.js +1 -0
  113. package/dist/domain/application/assistant/build-assistant-manifest.d.ts +4 -0
  114. package/dist/domain/application/assistant/build-assistant-manifest.js +1 -0
  115. package/dist/{phoenix/application-spec → domain/application/assistant}/generate-assistant-prompt.d.ts +6 -5
  116. package/dist/domain/application/assistant/generate-assistant-prompt.js +1 -0
  117. package/dist/domain/application/assistant/index.d.ts +4 -0
  118. package/dist/domain/application/assistant/index.js +1 -0
  119. package/dist/domain/application/assistant-field-options.d.ts +2 -3
  120. package/dist/domain/application/assistant-mutations.d.ts +2 -4
  121. package/dist/domain/application/assistant-mutations.js +1 -1
  122. package/dist/domain/application/assistant-recipe-groups.d.ts +2 -4
  123. package/dist/domain/application/configurator-builder.d.ts +33 -18
  124. package/dist/domain/application/configurator-builder.js +1 -1
  125. package/dist/domain/application/element-registration.d.ts +5 -0
  126. package/dist/domain/application/element-registration.js +1 -1
  127. package/dist/domain/application/handler-registration.d.ts +5 -0
  128. package/dist/domain/application/handler-registration.js +1 -1
  129. package/dist/domain/application/index.d.ts +5 -4
  130. package/dist/domain/application/index.js +1 -1
  131. package/dist/domain/application/published-data/create-finalize-admin-domain.d.ts +1 -2
  132. package/dist/domain/application/published-data/map-published-chunked-data.d.ts +1 -1
  133. package/dist/domain/application/published-data/map-published-data.d.ts +1 -2
  134. package/dist/domain/application/resolve-imported-transformers.d.ts +12 -2
  135. package/dist/domain/application/resolve-imported-transformers.js +1 -1
  136. package/dist/domain/components/component-reader-types.d.ts +1 -2
  137. package/dist/domain/components/debug-state-component.d.ts +1 -1
  138. package/dist/domain/components/debug-state-component.js +1 -1
  139. package/dist/domain/components/domain-component-optic.d.ts +4 -6
  140. package/dist/domain/components/domain-component-optic.js +2 -2
  141. package/dist/domain/components/drag-state-component.d.ts +1 -1
  142. package/dist/domain/components/drag-state-component.js +1 -1
  143. package/dist/domain/components/export-state-component.d.ts +1 -1
  144. package/dist/domain/components/export-state-component.js +1 -1
  145. package/dist/domain/components/fullscreen-state-component.d.ts +1 -1
  146. package/dist/domain/components/fullscreen-state-component.js +1 -1
  147. package/dist/domain/components/group-components-by-entity-id-and-name.d.ts +1 -2
  148. package/dist/domain/components/group-components-by-entity-id-and-name.js +1 -1
  149. package/dist/domain/components/hover-state-component.d.ts +1 -1
  150. package/dist/domain/components/hover-state-component.js +1 -1
  151. package/dist/domain/components/legacy-filter.d.ts +1 -2
  152. package/dist/domain/components/navigation-state-component.d.ts +1 -1
  153. package/dist/domain/components/navigation-state-component.js +1 -1
  154. package/dist/domain/components/selection-state-component.d.ts +1 -1
  155. package/dist/domain/components/selection-state-component.js +1 -1
  156. package/dist/domain/components/system-component-builder.d.ts +1 -2
  157. package/dist/domain/components/system-component-builder.js +1 -1
  158. package/dist/domain/components/system-component-filter.d.ts +1 -3
  159. package/dist/domain/components/system-virtual-entity.js +1 -1
  160. package/dist/domain/components/tool-state-component.d.ts +1 -1
  161. package/dist/domain/components/tool-state-component.js +1 -1
  162. package/dist/domain/components/updates.d.ts +17 -2
  163. package/dist/domain/components/view-state-component.d.ts +1 -1
  164. package/dist/domain/components/view-state-component.js +1 -1
  165. package/dist/domain/components/viewport-state-component.d.ts +1 -1
  166. package/dist/domain/components/viewport-state-component.js +1 -1
  167. package/dist/domain/core/action.d.ts +4 -5
  168. package/dist/domain/core/decoder/create-decoder.d.ts +6 -0
  169. package/dist/domain/core/decoder/create-decoder.js +1 -0
  170. package/dist/domain/core/decoder/decoder.d.ts +6 -0
  171. package/dist/domain/core/decoder/index.d.ts +2 -0
  172. package/dist/domain/core/decoder/index.js +1 -0
  173. package/dist/domain/core/domain-factory.d.ts +3 -4
  174. package/dist/domain/core/domain-factory.js +1 -1
  175. package/dist/domain/core/domain.d.ts +3 -4
  176. package/dist/domain/core/domain.js +1 -1
  177. package/dist/domain/{expressions → core/expression}/constant-expressions.d.ts +2 -3
  178. package/dist/domain/core/expression/constant-expressions.js +1 -0
  179. package/dist/domain/{expressions → core/expression}/custom-expression.d.ts +4 -5
  180. package/dist/domain/core/expression/custom-expression.js +1 -0
  181. package/dist/domain/core/{expression.d.ts → expression/expression.d.ts} +6 -8
  182. package/dist/domain/core/expression/expression.js +1 -0
  183. package/dist/domain/core/expression/index.d.ts +5 -0
  184. package/dist/domain/core/expression/index.js +1 -0
  185. package/dist/domain/{expressions → core/expression}/memoize-expression.d.ts +2 -2
  186. package/dist/domain/{expressions → core/expression}/prepare-domain-expressions.d.ts +1 -1
  187. package/dist/domain/core/index.d.ts +7 -17
  188. package/dist/domain/core/index.js +1 -1
  189. package/dist/domain/core/{component.d.ts → model/component.d.ts} +1 -1
  190. package/dist/domain/core/model/index.d.ts +6 -0
  191. package/dist/domain/core/model/index.js +1 -0
  192. package/dist/domain/core/{reflection.d.ts → model/reflection.d.ts} +1 -1
  193. package/dist/domain/core/model/reflection.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 -8
  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/domain-context-systems.d.ts +1 -3
  211. package/dist/domain/domain-context/index.d.ts +2 -2
  212. package/dist/domain/domain-context/navigation-system/navigation-system.d.ts +1 -2
  213. package/dist/domain/domain-context/navigation-system/navigation-updates.d.ts +1 -1
  214. package/dist/domain/domain-context/navigation-system/selection-transformers.d.ts +1 -1
  215. package/dist/domain/domain-context/navigation-system/selection-transformers.js +1 -1
  216. package/dist/domain/domain-context/recipe-system/recipes.d.ts +1 -3
  217. package/dist/domain/domain-context/recipe-system/recipes.js +1 -1
  218. package/dist/domain/domain-context/relation-transformers/cascade-deletes.d.ts +1 -1
  219. package/dist/domain/domain-context/relation-transformers/cascade-deletes.js +1 -1
  220. package/dist/domain/domain-context/relation-transformers/cascade-ref-pruning.d.ts +1 -1
  221. package/dist/domain/domain-context/relation-transformers/create-entity-refs.d.ts +1 -1
  222. package/dist/domain/domain-context/relation-transformers/replace-refs.d.ts +1 -1
  223. package/dist/domain/domain-context/store-system/apply-updates.d.ts +1 -2
  224. package/dist/domain/domain-context/store-system/apply-updates.js +1 -1
  225. package/dist/domain/domain-context/store-system/next-domain-entity-id.d.ts +1 -12
  226. package/dist/domain/domain-context/store-system/next-domain-entity-id.js +1 -1
  227. package/dist/domain/domain-context/store-system/reconcile-projected-entities.d.ts +1 -1
  228. package/dist/domain/domain-context/store-system/store-system.d.ts +1 -3
  229. package/dist/domain/domain-context/store-system/store-system.js +1 -1
  230. package/dist/domain/domain-context/store-system/system-state.d.ts +1 -3
  231. package/dist/domain/domain-context/transformers/actions-builder.d.ts +1 -1
  232. package/dist/domain/domain-context/transformers/actions-builder.js +1 -1
  233. package/dist/domain/domain-context/transformers/auto-snap-transformer.d.ts +1 -2
  234. package/dist/domain/domain-context/transformers/chain-builder.d.ts +2 -2
  235. package/dist/domain/domain-context/transformers/context.d.ts +1 -3
  236. package/dist/domain/domain-context/transformers/entity-builder.d.ts +1 -1
  237. package/dist/domain/domain-context/transformers/entity-builder.js +1 -1
  238. package/dist/domain/domain-context/transformers/then-builder.d.ts +1 -1
  239. package/dist/domain/domain-context/transformers/then-builder.js +1 -1
  240. package/dist/domain/domain-context/transformers/when-builder.d.ts +1 -2
  241. package/dist/domain/domain-context/transformers/when-builder.js +1 -1
  242. package/dist/domain/domain-context/undo-system.d.ts +1 -1
  243. package/dist/domain/domain-runtime/domain-context/component-reader.d.ts +1 -3
  244. package/dist/domain/domain-runtime/domain-context/component-reader.js +1 -1
  245. package/dist/domain/domain-runtime/domain-context/selectors.d.ts +1 -2
  246. package/dist/domain/domain-runtime/domain-context/selectors.js +1 -1
  247. package/dist/domain/domain-runtime/domain-runtime.d.ts +4 -4
  248. package/dist/domain/domain-runtime/spec/initialize.js +1 -1
  249. package/dist/domain/domain-runtime/spec/selectors.d.ts +2 -2
  250. package/dist/domain/domain-runtime/spec/selectors.js +1 -1
  251. package/dist/domain/domain-runtime/spec/types.d.ts +3 -3
  252. package/dist/domain/index.d.ts +3 -4
  253. package/dist/domain/index.js +1 -1
  254. package/dist/domain/invariants/builtin-invariant.d.ts +1 -2
  255. package/dist/domain/invariants/custom-invariants.d.ts +1 -3
  256. package/dist/domain/invariants/invariants.d.ts +10 -4
  257. package/dist/domain/invariants/invariants.js +1 -1
  258. package/dist/domain/invariants/violation.d.ts +1 -1
  259. package/dist/domain/mocks/create-mock-domain-runtime.d.ts +3 -3
  260. package/dist/domain/mocks/create-mock-domain-runtime.js +1 -1
  261. package/dist/domain/project-modules/index.d.ts +1 -0
  262. package/dist/domain/project-modules/index.js +1 -0
  263. package/dist/domain/project-modules/project-modules.d.ts +41 -0
  264. package/dist/domain/project-modules/project-modules.js +1 -0
  265. package/dist/domain/projections/projected-entities-projections.d.ts +1 -2
  266. package/dist/domain/projections/snap-matching.d.ts +1 -2
  267. package/dist/domain/projections/snap-utils.d.ts +1 -2
  268. package/dist/domain/relations/all-of-type-relation.d.ts +1 -4
  269. package/dist/domain/relations/all-of-type-relation.js +1 -1
  270. package/dist/domain/relations/component-factories.d.ts +1 -2
  271. package/dist/domain/relations/composed-of.d.ts +1 -1
  272. package/dist/domain/relations/composed-of.js +1 -1
  273. package/dist/domain/relations/direct-relation.d.ts +1 -3
  274. package/dist/domain/relations/indirect-relation.d.ts +1 -4
  275. package/dist/domain/relations/indirect-relation.js +1 -1
  276. package/dist/domain/relations/reference-component.d.ts +1 -2
  277. package/dist/domain/relations/reference-component.js +1 -1
  278. package/dist/domain/relations/reference-field.d.ts +1 -1
  279. package/dist/domain/relations/relation-factory.d.ts +1 -3
  280. package/dist/domain/relations/relation-implementation.d.ts +1 -4
  281. package/dist/domain/system-components/admin-sidebar.d.ts +1 -1
  282. package/dist/domain/system-components/admin-sidebar.js +1 -1
  283. package/dist/domain/system-components/angle-indicator.d.ts +1 -1
  284. package/dist/domain/system-components/angle-indicator.js +1 -1
  285. package/dist/domain/system-components/application-config.d.ts +1 -1
  286. package/dist/domain/system-components/application-config.js +1 -1
  287. package/dist/domain/system-components/attribute-selection.js +1 -1
  288. package/dist/domain/system-components/autorotate-camera-component.d.ts +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-sphere-component.d.ts +1 -1
  293. package/dist/domain/system-components/camera-based-hidden-entity-object.js +1 -1
  294. package/dist/domain/system-components/camera-based-hidden-entity.js +1 -1
  295. package/dist/domain/system-components/canvas-config.d.ts +1 -1
  296. package/dist/domain/system-components/canvas-config.js +1 -1
  297. package/dist/domain/system-components/canvas-padding.d.ts +1 -1
  298. package/dist/domain/system-components/canvas-padding.js +1 -1
  299. package/dist/domain/system-components/canvas-preset-environment.d.ts +1 -1
  300. package/dist/domain/system-components/canvas-preset-environment.js +1 -1
  301. package/dist/domain/system-components/child-entity-selection.d.ts +1 -1
  302. package/dist/domain/system-components/client-side-image.js +1 -1
  303. package/dist/domain/system-components/collision-box-geometry.d.ts +1 -1
  304. package/dist/domain/system-components/collision-geometries.d.ts +1 -1
  305. package/dist/domain/system-components/collision-geometry.d.ts +1 -1
  306. package/dist/domain/system-components/collision-point-geometry.d.ts +1 -1
  307. package/dist/domain/system-components/common/dimension-indicator-schema.d.ts +1 -1
  308. package/dist/domain/system-components/common/dimension-indicator-schema.js +1 -1
  309. package/dist/domain/system-components/constraint.d.ts +1 -1
  310. package/dist/domain/system-components/create-blueprint.d.ts +1 -1
  311. package/dist/domain/system-components/custom-header.d.ts +1 -1
  312. package/dist/domain/system-components/custom-header.js +1 -1
  313. package/dist/domain/system-components/custom-scene-entity.d.ts +1 -1
  314. package/dist/domain/system-components/custom-scene-entity.js +1 -1
  315. package/dist/domain/system-components/custom-sidebar-footer.d.ts +1 -1
  316. package/dist/domain/system-components/custom-sidebar-footer.js +1 -1
  317. package/dist/domain/system-components/dimension-indicator.d.ts +1 -1
  318. package/dist/domain/system-components/dimension-indicator.js +1 -1
  319. package/dist/domain/system-components/distance-dimension-select.d.ts +1 -1
  320. package/dist/domain/system-components/distance-dimension-select.js +1 -1
  321. package/dist/domain/system-components/distance-dimension.d.ts +1 -1
  322. package/dist/domain/system-components/distance-dimension.js +1 -1
  323. package/dist/domain/system-components/drag-handle.d.ts +1 -1
  324. package/dist/domain/system-components/drag-handle.js +1 -1
  325. package/dist/domain/system-components/editable-angle-indicator.d.ts +1 -1
  326. package/dist/domain/system-components/editable-angle-indicator.js +1 -1
  327. package/dist/domain/system-components/editable-distance-dimension-indicator.d.ts +1 -1
  328. package/dist/domain/system-components/editable-distance-dimension-indicator.js +1 -1
  329. package/dist/domain/system-components/editable-offset-indicator.d.ts +1 -1
  330. package/dist/domain/system-components/editable-offset-indicator.js +1 -1
  331. package/dist/domain/system-components/editable-size-indicator.d.ts +1 -1
  332. package/dist/domain/system-components/editable-size-indicator.js +1 -1
  333. package/dist/domain/system-components/exit-tool-mode-fab.d.ts +1 -1
  334. package/dist/domain/system-components/exit-tool-mode-fab.js +1 -1
  335. package/dist/domain/system-components/finalize-action.d.ts +1 -1
  336. package/dist/domain/system-components/finalize-action.js +1 -1
  337. package/dist/domain/system-components/fixed-header.d.ts +1 -1
  338. package/dist/domain/system-components/fixed-header.js +1 -1
  339. package/dist/domain/system-components/floating-header.d.ts +1 -1
  340. package/dist/domain/system-components/floating-header.js +1 -1
  341. package/dist/domain/system-components/generic-dimension.d.ts +1 -1
  342. package/dist/domain/system-components/generic-dimension.js +1 -1
  343. package/dist/domain/system-components/hidden-header.d.ts +1 -1
  344. package/dist/domain/system-components/hidden-header.js +1 -1
  345. package/dist/domain/system-components/hidden-sidebar-footer.d.ts +1 -1
  346. package/dist/domain/system-components/hidden-sidebar-footer.js +1 -1
  347. package/dist/domain/system-components/horizontal-tabs.d.ts +1 -1
  348. package/dist/domain/system-components/horizontal-tabs.js +1 -1
  349. package/dist/domain/system-components/hotspot-drag-handle.d.ts +1 -1
  350. package/dist/domain/system-components/hotspot-drag-handle.js +1 -1
  351. package/dist/domain/system-components/list-selector-dimension-indicator.d.ts +1 -1
  352. package/dist/domain/system-components/list-selector-dimension-indicator.js +1 -1
  353. package/dist/domain/system-components/material-swatch.js +1 -1
  354. package/dist/domain/system-components/offset-anchors.d.ts +1 -1
  355. package/dist/domain/system-components/offset-anchors.js +1 -1
  356. package/dist/domain/system-components/offset-indicator.d.ts +1 -2
  357. package/dist/domain/system-components/offset-indicator.js +1 -1
  358. package/dist/domain/system-components/offset.d.ts +1 -1
  359. package/dist/domain/system-components/offset.js +1 -1
  360. package/dist/domain/system-components/other-action.d.ts +1 -1
  361. package/dist/domain/system-components/other-action.js +1 -1
  362. package/dist/domain/system-components/pivot-point.d.ts +1 -1
  363. package/dist/domain/system-components/pivot-point.js +1 -1
  364. package/dist/domain/system-components/price.js +1 -1
  365. package/dist/domain/system-components/projected-entities.d.ts +1 -1
  366. package/dist/domain/system-components/projected-entities.js +1 -1
  367. package/dist/domain/system-components/property-page.d.ts +1 -1
  368. package/dist/domain/system-components/property-page.js +1 -1
  369. package/dist/domain/system-components/read-sidebar-footer.d.ts +1 -1
  370. package/dist/domain/system-components/read-sidebar-footer.js +1 -1
  371. package/dist/domain/system-components/save-template-thumbnail.js +1 -1
  372. package/dist/domain/system-components/scene-entity-add-fab.js +1 -1
  373. package/dist/domain/system-components/scene-entity-delete-fab.js +1 -1
  374. package/dist/domain/system-components/scene-entity-local-material-override.js +1 -1
  375. package/dist/domain/system-components/scene-entity-material-override.js +1 -1
  376. package/dist/domain/system-components/scene-entity-navigation-hotspot.js +1 -1
  377. package/dist/domain/system-components/scene-entity-object-local-material-override.js +1 -1
  378. package/dist/domain/system-components/scene-entity-object-material-override.js +1 -1
  379. package/dist/domain/system-components/scene-entity-object-remote-material-override.js +1 -1
  380. package/dist/domain/system-components/scene-entity-object-transimissive-material-override.js +1 -1
  381. package/dist/domain/system-components/scene-entity-remote-material-override.js +1 -1
  382. package/dist/domain/system-components/scene-entity-select-hotspot.js +1 -1
  383. package/dist/domain/system-components/scene-entity-transimissive-material-override.js +1 -1
  384. package/dist/domain/system-components/sidebar-tabs.d.ts +1 -1
  385. package/dist/domain/system-components/sidebar-tabs.js +1 -1
  386. package/dist/domain/system-components/simple-summary.js +1 -1
  387. package/dist/domain/system-components/size.d.ts +1 -1
  388. package/dist/domain/system-components/size.js +1 -1
  389. package/dist/domain/system-components/sketching-draw.d.ts +1 -1
  390. package/dist/domain/system-components/sketching-draw.js +1 -1
  391. package/dist/domain/system-components/sketching-edit.d.ts +1 -1
  392. package/dist/domain/system-components/sketching-edit.js +1 -1
  393. package/dist/domain/system-components/sketching-line.d.ts +1 -1
  394. package/dist/domain/system-components/sketching-line.js +1 -1
  395. package/dist/domain/system-components/sketching-rectangle.d.ts +1 -1
  396. package/dist/domain/system-components/sketching-rectangle.js +1 -1
  397. package/dist/domain/system-components/sketching.d.ts +1 -1
  398. package/dist/domain/system-components/sketching.js +1 -1
  399. package/dist/domain/system-components/snap-axis.d.ts +1 -1
  400. package/dist/domain/system-components/snap-axis.js +1 -1
  401. package/dist/domain/system-components/snap-edge.d.ts +1 -1
  402. package/dist/domain/system-components/snap-edge.js +1 -1
  403. package/dist/domain/system-components/snap-plane.d.ts +1 -1
  404. package/dist/domain/system-components/snap-plane.js +1 -1
  405. package/dist/domain/system-components/snap-point.d.ts +1 -1
  406. package/dist/domain/system-components/snap-point.js +1 -1
  407. package/dist/domain/system-components/summary-component.js +1 -1
  408. package/dist/domain/system-components/tool-menu-fab.d.ts +1 -1
  409. package/dist/domain/system-components/tool-menu-fab.js +1 -1
  410. package/dist/domain/system-components/toolbar.d.ts +1 -1
  411. package/dist/domain/system-components/toolbar.js +1 -1
  412. package/dist/domain/system-components/universal-sidebar-footer.d.ts +1 -1
  413. package/dist/domain/system-components/universal-sidebar-footer.js +1 -1
  414. package/dist/domain/utils/eval-cache.d.ts +1 -2
  415. package/dist/domain/utils/memo-eval.d.ts +1 -3
  416. package/dist/editor/Editor.js +1 -1
  417. package/dist/editor/domain-editors/use-implementation-files.d.ts +7 -6
  418. package/dist/editor/domain-editors/use-implementation-files.js +1 -1
  419. package/dist/editor/graphql/GraphQLPanel.js +1 -1
  420. package/dist/editor/variants/VariantAnswerFooter.d.ts +17 -0
  421. package/dist/editor/variants/VariantAnswerFooter.js +1 -0
  422. package/dist/editor/variants/VariantPreviewHandler.d.ts +6 -0
  423. package/dist/editor/variants/VariantPreviewHandler.js +1 -0
  424. package/dist/editor/variants/variant-preview-styles.d.ts +49 -0
  425. package/dist/editor/variants/variant-preview-styles.js +1 -0
  426. package/dist/i18n/locales/cs/messages.js +1 -1
  427. package/dist/i18n/locales/da/messages.js +1 -1
  428. package/dist/i18n/locales/de/messages.js +1 -1
  429. package/dist/i18n/locales/de-AT/messages.js +1 -1
  430. package/dist/i18n/locales/en/messages.js +1 -1
  431. package/dist/i18n/locales/en-AU/messages.js +1 -1
  432. package/dist/i18n/locales/en-GB/messages.js +1 -1
  433. package/dist/i18n/locales/es/messages.js +1 -1
  434. package/dist/i18n/locales/fr/messages.js +1 -1
  435. package/dist/i18n/locales/hu/messages.js +1 -1
  436. package/dist/i18n/locales/it/messages.js +1 -1
  437. package/dist/i18n/locales/nl/messages.js +1 -1
  438. package/dist/i18n/locales/pl/messages.js +1 -1
  439. package/dist/i18n/locales/pt/messages.js +1 -1
  440. package/dist/i18n/locales/ro/messages.js +1 -1
  441. package/dist/i18n/locales/sk/messages.js +1 -1
  442. package/dist/i18n/locales/tr/messages.js +1 -1
  443. package/dist/legacy/domain-cli/gen/configurator-builder.js +21 -8
  444. package/dist/legacy/domain-cli/utils/cache.d.ts +1 -1
  445. package/dist/legacy/domain-cli/utils/cache.js +1 -1
  446. package/dist/legacy/phoenix-cli/project-gen/generators/file-templates/frontend-admin.js +18 -19
  447. package/dist/legacy/phoenix-cli/project-gen/generators/file-templates/frontend-configurator.js +15 -16
  448. package/dist/legacy/phoenix-cli/project-gen/generators/file-templates/frontend-embedded-admin.js +22 -23
  449. package/dist/legacy/phoenix-cli/project-gen/generators/file-templates/frontend-embedded-configurator.js +15 -16
  450. package/dist/legacy/phoenix-cli/project-gen/generators/file-templates/generator-shared.d.ts +7 -2
  451. package/dist/legacy/phoenix-cli/project-gen/generators/file-templates/generator-shared.js +8 -12
  452. package/dist/legacy/phoenix-cli/project-gen/generators/file-templates/index.d.ts +1 -1
  453. package/dist/legacy/phoenix-cli/project-gen/generators/file-templates/index.js +1 -1
  454. package/dist/legacy/phoenix-cli/project-gen/generators/file-templates/webhook-builders.js +7 -7
  455. package/dist/phoenix/application-spec/application-spec-builder.js +1 -1
  456. package/dist/phoenix/application-spec/resolve-deployment-data.d.ts +4 -3
  457. package/dist/phoenix/application-spec/resolve-deployment-data.js +2 -2
  458. package/dist/phoenix/cli.js +1 -1
  459. package/dist/phoenix/commands/deploy.js +2 -2
  460. package/dist/phoenix/commands/dev.js +5 -5
  461. package/dist/phoenix/commands/index.d.ts +1 -0
  462. package/dist/phoenix/commands/index.js +1 -1
  463. package/dist/phoenix/commands/prepare-deployment-command.js +2 -2
  464. package/dist/phoenix/commands/prepare-local-environment-command.js +1 -1
  465. package/dist/phoenix/commands/story-dev.js +2 -2
  466. package/dist/phoenix/commands/variants.d.ts +35 -0
  467. package/dist/phoenix/commands/variants.js +1 -0
  468. package/dist/phoenix/editor-server/commands-router.d.ts +68 -1
  469. package/dist/phoenix/editor-server/commands-router.js +1 -1
  470. package/dist/phoenix/editor-server/editor-router.d.ts +65 -0
  471. package/dist/phoenix/editor-server/editor-server.d.ts +3 -3
  472. package/dist/phoenix/editor-server/editor-server.js +1 -1
  473. package/dist/phoenix/editor-server/protocol.d.ts +1 -0
  474. package/dist/phoenix/editor-server/spec-router.js +1 -1
  475. package/dist/phoenix/editor-server/trpc.d.ts +3 -0
  476. package/dist/phoenix/scripts/build-admin.js +1 -1
  477. package/dist/phoenix/services/application-spec-project-watcher.d.ts +13 -2
  478. package/dist/phoenix/services/application-spec-project-watcher.js +3 -3
  479. package/dist/phoenix/services/index.d.ts +4 -0
  480. package/dist/phoenix/services/index.js +1 -1
  481. package/dist/phoenix/services/phoenix-application.d.ts +21 -0
  482. package/dist/phoenix/services/phoenix-application.js +1 -0
  483. package/dist/phoenix/services/phoenix-store.d.ts +48 -0
  484. package/dist/phoenix/services/phoenix-store.js +1 -0
  485. package/dist/phoenix/services/phx-variant-previews-plugin.d.ts +9 -0
  486. package/dist/phoenix/services/phx-variant-previews-plugin.js +1 -0
  487. package/dist/phoenix/services/prepare-development-environment.js +1 -1
  488. package/dist/phoenix/services/variant-file-session.d.ts +36 -0
  489. package/dist/phoenix/services/variant-file-session.js +1 -0
  490. package/dist/phoenix/services/variant-preview-service.d.ts +80 -0
  491. package/dist/phoenix/services/variant-preview-service.js +1 -0
  492. package/dist/phoenix/services/vite-config.js +1 -1
  493. package/dist/react-sdk/application-runtime/common-services/analytics/analytics-service.d.ts +2 -2
  494. package/dist/react-sdk/application-runtime/common-services/analytics/domain-controls-analytics.d.ts +21 -21
  495. package/dist/react-sdk/application-runtime/hooks/data/use-published-data.d.ts +1 -1
  496. package/dist/react-sdk/application-runtime/hooks/use-domain-application-props.d.ts +5 -2
  497. package/dist/react-sdk/application-runtime/hooks/use-spec.d.ts +1 -1
  498. package/dist/react-sdk/application-runtime/mocks/create-mock-application-runtime.d.ts +1 -1
  499. package/dist/react-sdk/application-runtime/mocks/create-mock-application-runtime.js +1 -1
  500. package/dist/react-sdk/application-runtime/runtime/create-application-runtime.d.ts +4 -4
  501. package/dist/ui-sdk/common/use-viewport-size.d.ts +4 -1
  502. package/dist/ui-sdk/common/use-viewport-size.js +1 -1
  503. package/dist/ui-sdk/components/mobile-controls/index.d.ts +1 -1
  504. package/dist/webhook/builders/common.d.ts +3 -0
  505. package/dist/webhook/builders/webhook-builder.d.ts +1 -1
  506. package/dist/webhook/builders/webhook-builder.js +1 -1
  507. package/package.json +4 -4
  508. package/dist/configurator/assistant/index.d.ts +0 -1
  509. package/dist/configurator/assistant/index.js +0 -1
  510. package/dist/configurator/assistant/use-assistant-chat.d.ts +0 -30
  511. package/dist/configurator/assistant/use-assistant-chat.js +0 -1
  512. package/dist/configurator/ui/assistant/AssistantPanelProvider.d.ts +0 -42
  513. package/dist/configurator/ui/assistant/AssistantPanelProvider.js +0 -1
  514. package/dist/domain/core/json-schema.js +0 -1
  515. package/dist/domain/core/reflection.js +0 -1
  516. package/dist/domain/expressions/constant-expressions.js +0 -1
  517. package/dist/domain/expressions/custom-expression.js +0 -1
  518. package/dist/domain/expressions/index.d.ts +0 -1
  519. package/dist/domain/expressions/index.js +0 -1
  520. package/dist/phoenix/application-spec/generate-assistant-prompt.js +0 -1
  521. /package/dist/domain/{core/enhanced-json-schema.js → application/assistant/assistant-manifest.js} +0 -0
  522. /package/dist/domain/{core/expression.js → application/assistant/assistant-resolved-manifest.js} +0 -0
  523. /package/dist/domain/core/{schema-validator.js → decoder/decoder.js} +0 -0
  524. /package/dist/domain/{expressions → core/expression}/memoize-expression.js +0 -0
  525. /package/dist/domain/{expressions → core/expression}/prepare-domain-expressions.js +0 -0
  526. /package/dist/domain/core/{alias.d.ts → model/alias.d.ts} +0 -0
  527. /package/dist/domain/core/{alias.js → model/alias.js} +0 -0
  528. /package/dist/domain/core/{common-definitions.d.ts → model/common-definitions.d.ts} +0 -0
  529. /package/dist/domain/core/{common-definitions.js → model/common-definitions.js} +0 -0
  530. /package/dist/domain/core/{component.js → model/component.js} +0 -0
  531. /package/dist/domain/core/{model.d.ts → model/model.d.ts} +0 -0
  532. /package/dist/domain/core/{model.js → model/model.js} +0 -0
  533. /package/dist/domain/core/{preset.d.ts → model/preset.d.ts} +0 -0
  534. /package/dist/domain/core/{preset.js → model/preset.js} +0 -0
  535. /package/dist/domain/core/{schema-validator-ajv.d.ts → schema/create-ajv-schema-validator.d.ts} +0 -0
  536. /package/dist/domain/core/{schema-validator-ajv.js → schema/create-ajv-schema-validator.js} +0 -0
  537. /package/dist/domain/core/{schema-validator-csp.d.ts → schema/create-csp-schema-validator.d.ts} +0 -0
  538. /package/dist/domain/core/{schema-validator-csp.js → schema/create-csp-schema-validator.js} +0 -0
  539. /package/dist/domain/core/{enhanced-json-schema.d.ts → schema/enhanced-json-schema.d.ts} +0 -0
  540. /package/dist/domain/core/{json-schema.d.ts → schema/extended-schema-validator.d.ts} +0 -0
  541. /package/dist/domain/core/{schema-validator.d.ts → schema/schema-validator.d.ts} +0 -0
  542. /package/dist/domain/core/{migrations.js → state/migrations.js} +0 -0
  543. /package/dist/domain/core/{state.js → state/state.js} +0 -0
@@ -1,7 +1,7 @@
1
1
  import type { exportStateComponent } from '../../components/export-state-component.js';
2
2
  import type { selectionStateComponent } from '../../components/selection-state-component.js';
3
3
  import type { DomainEntityCreation, DomainEntityModification, DomainEntityReplacement, EntityDeletion, EphemeralRecordModification } from '../../components/updates.js';
4
- import { type $DomainEntity, type DomainEntity, type DomainEntityId, type EntityByType } from '../../core/model.js';
4
+ import { type $DomainEntity, type DomainEntity, type DomainEntityId, type EntityByType } from '../../core/index.js';
5
5
  import type { ViolationTypesOf$Entity } from '../../invariants/violation.js';
6
6
  import type { AllActions } from './actions-builder.js';
7
7
  import type { BaseTransformerBuilderContext, ContextFactoryFilter, DomainEntityModificationUpdateAtField } from './context.js';
@@ -1 +1 @@
1
- import{domainEntityTypeFromId as t,isDomainEntityId as e}from"../../core/model.js";import{isDeselectUpdate as n,isExportUpdate as i,isSelectUpdate as r}from"../navigation-system/navigation-updates.js";import{updateActions as o}from"./actions-builder.js";import{createBaseContext as a}from"./context.js";import{thenAndEntityAwareCausesBuilder as l,thenBuilder as s}from"./then-builder.js";export const entityBuilder=(d,f)=>{let p=(n,i,r,o)=>{let a=r.filter(t=>"replaceDomainEntity"===t.kind);if(0===a.length)return o?.("no-event","No replacement updates found, skipping transformer",{updates:r}),[];let l=a.filter(r=>e(r.entityId)&&(void 0===n||n.includes(t(r.entityId)))&&(void 0===i||i.includes(r.replacementEntity.type)));return 0===l.length?(o?.("no-match",`No replacement from ${n?.join(", ")??"any"} to ${i?.join(", ")??"any"} found, skipping transformer`,{updates:r}),[]):l};return{modified:e=>l(d,o(!0),f()((n,i,r,o,l)=>{let s=n.filter(t=>"modifyDomainEntity"===t.kind);if(0===s.length)return l?.("no-event","No modification updates found, skipping transformer",{updates:n}),[];let f=s.filter(e=>d.includes(t(e.entityId)));if(0===f.length)return l?.("no-match",`No modification updates for entity ${d.join(", ")}, skipping transformer`,{updates:n}),[];let p=f;if(e?.atFields!==void 0){if(0===(p=f.filter(t=>e.atFields.every(e=>Object.hasOwn(t.stateDelta,e)))).length)return l?.("no-match",`Entity ${d.join(", ")} modified, but not at field ${e.atFields.join(", ")}, skipping transformer`,{updates:n}),[];l?.("match",`Entity ${d.join(", ")} modified at field ${e.atFields.join(", ")}, processing transformer`,{updates:n})}else l?.("match",`Entity ${d.join(", ")} modified, processing transformer`,{updates:n});let c=a(o,i,r,n,l);return p.map(t=>{let e=t.entityId;return{...c,getOld$Entity:()=>o.domain.get$Entity(e,i),getNew$Entity:()=>o.domain.get$Entity(e,c.getNewState()),entityId:e,update:t}})})),created:()=>l(d,o(!0),f()((t,e,n,i,r)=>{let o=t.filter(t=>"createDomainEntity"===t.kind);if(0===o.length)return r?.("no-event","No entity creation updates found, skipping transformer",{updates:t}),[];let l=o.filter(t=>d.includes(t.entity.type));if(0===l.length)return r?.("no-match",`No creation updates for entity ${d.join(", ")}, skipping transformer`,{updates:t}),[];r?.("match",`Entity ${d.join(", ")} created, processing transformer`,{updates:t});let s=a(i,e,n,t,r);return l.map(t=>{let e=t.entityId;return{...s,getNew$Entity:()=>i.domain.get$Entity(e,s.getNewState()),entityId:e,update:t}})})),deleted:()=>l(d,o(!0),f()((n,i,r,o,l)=>{let s=n.filter(t=>"deleteEntity"===t.kind);if(0===s.length)return l?.("no-event","No entity deletion updates found, skipping transformer",{updates:n}),[];let f=s.filter(n=>e(n.entityId)&&d.includes(t(n.entityId)));if(0===f.length)return l?.("no-match",`No deletion updates for entity ${d.join(", ")}, skipping transformer`,{updates:n}),[];l?.("match",`Entity ${d.join(", ")} deleted, processing transformer`,{updates:n});let p=a(o,i,r,n,l);return f.map(t=>{let e=t.entityId;return{...p,getOld$Entity:()=>o.domain.get$Entity(e,i),entityId:e,update:t}})})),replaces:t=>l(d,o(!0),f()((e,n,i,r,o)=>{let l=p(t,d,e,o);if(0===l.length)return[];o?.("match",`Entity ${d.join(", ")} replaces ${t.join(", ")??"any"}, processing transformer`,{updates:e});let s=a(r,n,i,e,o);return l.map(t=>{let e=t.entityId,i=t.replacementEntity.id;return{...s,getReplacing$Entity:()=>r.domain.get$Entity(i,s.getNewState()),getReplaced$Entity:()=>r.domain.get$Entity(e,n),entityId:i,update:t}})})),replacedWith:t=>l(d,o(!0),f()((e,n,i,r,o)=>{let l=p(d,t,e,o);if(0===l.length)return[];o?.("match",`Entity ${d.join(", ")} replaced with ${t.join(", ")??"any"}, processing transformer`,{updates:e});let s=a(r,n,i,e,o);return l.map(t=>{let e=t.entityId,i=t.replacementEntity.id;return{...s,getReplacing$Entity:()=>r.domain.get$Entity(i,s.getNewState()),getReplaced$Entity:()=>r.domain.get$Entity(e,n),entityId:e,update:t}})})),selected:n=>l(d,o(!0),f()((i,o,l,s,f)=>{let p=i.filter(r);if(0===p.length)return f?.("no-event","No selection updates found, skipping transformer",{updates:i}),[];let c=p.filter(n=>e(n.writableState.selectedEntityId)&&d.includes(t(n.writableState.selectedEntityId)));if(0===c.length)return f?.("no-match",`No selection updates for entity ${d.join(", ")}, skipping transformer`,{updates:i}),[];let m=s.navigationSystem.getActiveSelectionState(o),y=t(m);if(n?.insteadOf!==void 0&&!n?.insteadOf?.includes(y))return f?.("no-match",`Entity ${d.join(", ")} selected, but not instead of ${d.join(", ")}, skipping transformer`,{updates:i}),[];let g=n?.occurrence??"initial",u="any"===g?c:c.filter(t=>"repeated"===g==(t.writableState.selectedEntityId===m));if(0===u.length)return"initial"===g?f?.("no-match",`Targeting initial selection, but the entity ${d.join(", ")} was res-selected, skipping transformer`,{updates:i}):f?.("no-match",`Targeting repeated selection, but the entity ${d.join(", ")} was selected initially, skipping transformer`,{updates:i}),[];f?.("match",`Entity ${d.join(", ")} selected, processing transformer`,{updates:i});let $=a(s,o,l,i,f);return u.map(t=>{let e=t.writableState.selectedEntityId;return{...$,getSelected$Entity:()=>s.domain.get$Entity(e,$.getNewState()),getDeselected$Entity:()=>s.domain.get$Entity(m,o),entityId:e,update:t}})})),deselected:e=>{if((e?.occurrence==="repeated"||e?.occurrence==="any")&&e?.inFavorOf!==void 0)throw Error("inFavorOf is not supported when occurrence is repeated or any");return l(d,o(!0),f()((i,o,l,s,f)=>{let p=i.filter(t=>r(t)||n(t));if(0===p.length)return f?.("no-event","No selection/deselection updates found, skipping transformer",{updates:i}),[];let c=s.navigationSystem.getActiveSelectionState(o),m=t(c);if(!d.includes(m))return f?.("no-match",`Deselected entity is of type ${m} and not ${d.join(", ")}, skipping transformer`,{updates:i}),[];let y=p.filter(t=>t.writableState.selectedEntityId!==c),g=e?.occurrence??"initial";if(0===y.length&&"initial"===g)return f?.("no-match","Entity has not truly been deselected, skipping transformer",{updates:i}),[];if(y.length>0&&"repeated"===g)return f?.("no-match","Entity has been deselected initially, but target occurrence is repeated, skipping transformer",{updates:i}),[];let u=y.length>0?y:p,$=e?.inFavorOf?u.filter(n=>e.inFavorOf?.includes(t(n.writableState.selectedEntityId))):u;if(0===$.length)return f?.("no-match",`Entity ${c} deselected but not in favor of ${e?.inFavorOf?.join(",")}, skipping transformer`,{updates:i}),[];f?.("match",`Entity ${d.join(", ")} deselected in favor of ${e?.inFavorOf?.join(",")??"any"}, processing transformer`,{updates:i});let h=a(s,o,l,i,f);return $.map(t=>{let e=t.writableState.selectedEntityId;return{...h,getSelected$Entity:()=>s.domain.get$Entity(e,h.getNewState()),getDeselected$Entity:()=>s.domain.get$Entity(c,o),entityId:c,update:t}})}))},violated:n=>s(o(!0),f()((i,r,o,l,s)=>{let{validity:f,state:p}=l.storeSystem.prepareStateEmissionWithoutTransformation(i,r,o);if(f.valid||"uncaught"===f.severity)return s?.("no-event","State is valid, skipping transformer",{validity:f}),[];let c=Array.from(new Set(f.entityViolations.filter(t=>n.includes(t.violation.type)).map(t=>t.entityId)));if(!c)return s?.("no-event",`No violations of type ${n.join(", ")} found, skipping transformer`,{validity:f}),[];let m=c.filter(n=>e(n)&&d.includes(t(n)));if(0===m.length)return s?.("no-match",`No violations of type ${n.join(", ")} found for entity ${d.join(", ")}, skipping transformer`,{validity:f}),[];s?.("no-match",`Violations of type ${n.join(", ")} found for entity ${d.join(", ")}, processing transformer`,{validity:f});let y=a(l,r,o,i,s);return m.map(t=>({...y,getViolated$Entity:()=>l.domain.get$Entity(t,p)}))})),exported:n=>l(d,o(!0),f()((r,o,l,s,f)=>{let p=r.filter(i);if(0===p.length)return f?.("no-event","No export updates found, skipping transformer",{updates:r}),[];let c=p.filter(t=>n.includes(t.writableState.activeState));if(0===c.length)return f?.("no-match",`No export updates matching states ${n.join(", ")}, skipping transformer`,{updates:r}),[];let m=c.filter(n=>e(n.writableState.exportedEntityId)&&d.includes(t(n.writableState.exportedEntityId)));if(0===m.length)return f?.("no-match",`No export updates for entity ${d.join(", ")} with states ${n.join(", ")}, skipping transformer`,{updates:r}),[];f?.("match",`Entity ${d.join(", ")} exported with state ${n.join(", ")}, processing transformer`,{updates:r});let y=a(s,o,l,r,f);return m.map(t=>{let e=t.writableState.exportedEntityId;return{...y,getExported$Entity:()=>s.domain.get$Entity(e,y.getNewState()),entityId:e,update:t,getExportState:()=>t.writableState.activeState}})}))}};
1
+ import{domainEntityTypeFromId as t,isDomainEntityId as e}from"../../core/index.js";import{isDeselectUpdate as n,isExportUpdate as i,isSelectUpdate as r}from"../navigation-system/navigation-updates.js";import{updateActions as o}from"./actions-builder.js";import{createBaseContext as a}from"./context.js";import{thenAndEntityAwareCausesBuilder as l,thenBuilder as s}from"./then-builder.js";export const entityBuilder=(d,f)=>{let p=(n,i,r,o)=>{let a=r.filter(t=>"replaceDomainEntity"===t.kind);if(0===a.length)return o?.("no-event","No replacement updates found, skipping transformer",{updates:r}),[];let l=a.filter(r=>e(r.entityId)&&(void 0===n||n.includes(t(r.entityId)))&&(void 0===i||i.includes(r.replacementEntity.type)));return 0===l.length?(o?.("no-match",`No replacement from ${n?.join(", ")??"any"} to ${i?.join(", ")??"any"} found, skipping transformer`,{updates:r}),[]):l};return{modified:e=>l(d,o(!0),f()((n,i,r,o,l)=>{let s=n.filter(t=>"modifyDomainEntity"===t.kind);if(0===s.length)return l?.("no-event","No modification updates found, skipping transformer",{updates:n}),[];let f=s.filter(e=>d.includes(t(e.entityId)));if(0===f.length)return l?.("no-match",`No modification updates for entity ${d.join(", ")}, skipping transformer`,{updates:n}),[];let p=f;if(e?.atFields!==void 0){if(0===(p=f.filter(t=>e.atFields.every(e=>Object.hasOwn(t.stateDelta,e)))).length)return l?.("no-match",`Entity ${d.join(", ")} modified, but not at field ${e.atFields.join(", ")}, skipping transformer`,{updates:n}),[];l?.("match",`Entity ${d.join(", ")} modified at field ${e.atFields.join(", ")}, processing transformer`,{updates:n})}else l?.("match",`Entity ${d.join(", ")} modified, processing transformer`,{updates:n});let c=a(o,i,r,n,l);return p.map(t=>{let e=t.entityId;return{...c,getOld$Entity:()=>o.domain.get$Entity(e,i),getNew$Entity:()=>o.domain.get$Entity(e,c.getNewState()),entityId:e,update:t}})})),created:()=>l(d,o(!0),f()((t,e,n,i,r)=>{let o=t.filter(t=>"createDomainEntity"===t.kind);if(0===o.length)return r?.("no-event","No entity creation updates found, skipping transformer",{updates:t}),[];let l=o.filter(t=>d.includes(t.entity.type));if(0===l.length)return r?.("no-match",`No creation updates for entity ${d.join(", ")}, skipping transformer`,{updates:t}),[];r?.("match",`Entity ${d.join(", ")} created, processing transformer`,{updates:t});let s=a(i,e,n,t,r);return l.map(t=>{let e=t.entityId;return{...s,getNew$Entity:()=>i.domain.get$Entity(e,s.getNewState()),entityId:e,update:t}})})),deleted:()=>l(d,o(!0),f()((n,i,r,o,l)=>{let s=n.filter(t=>"deleteEntity"===t.kind);if(0===s.length)return l?.("no-event","No entity deletion updates found, skipping transformer",{updates:n}),[];let f=s.filter(n=>e(n.entityId)&&d.includes(t(n.entityId)));if(0===f.length)return l?.("no-match",`No deletion updates for entity ${d.join(", ")}, skipping transformer`,{updates:n}),[];l?.("match",`Entity ${d.join(", ")} deleted, processing transformer`,{updates:n});let p=a(o,i,r,n,l);return f.map(t=>{let e=t.entityId;return{...p,getOld$Entity:()=>o.domain.get$Entity(e,i),entityId:e,update:t}})})),replaces:t=>l(d,o(!0),f()((e,n,i,r,o)=>{let l=p(t,d,e,o);if(0===l.length)return[];o?.("match",`Entity ${d.join(", ")} replaces ${t.join(", ")??"any"}, processing transformer`,{updates:e});let s=a(r,n,i,e,o);return l.map(t=>{let e=t.entityId,i=t.replacementEntity.id;return{...s,getReplacing$Entity:()=>r.domain.get$Entity(i,s.getNewState()),getReplaced$Entity:()=>r.domain.get$Entity(e,n),entityId:i,update:t}})})),replacedWith:t=>l(d,o(!0),f()((e,n,i,r,o)=>{let l=p(d,t,e,o);if(0===l.length)return[];o?.("match",`Entity ${d.join(", ")} replaced with ${t.join(", ")??"any"}, processing transformer`,{updates:e});let s=a(r,n,i,e,o);return l.map(t=>{let e=t.entityId,i=t.replacementEntity.id;return{...s,getReplacing$Entity:()=>r.domain.get$Entity(i,s.getNewState()),getReplaced$Entity:()=>r.domain.get$Entity(e,n),entityId:e,update:t}})})),selected:n=>l(d,o(!0),f()((i,o,l,s,f)=>{let p=i.filter(r);if(0===p.length)return f?.("no-event","No selection updates found, skipping transformer",{updates:i}),[];let c=p.filter(n=>e(n.writableState.selectedEntityId)&&d.includes(t(n.writableState.selectedEntityId)));if(0===c.length)return f?.("no-match",`No selection updates for entity ${d.join(", ")}, skipping transformer`,{updates:i}),[];let m=s.navigationSystem.getActiveSelectionState(o),y=t(m);if(n?.insteadOf!==void 0&&!n?.insteadOf?.includes(y))return f?.("no-match",`Entity ${d.join(", ")} selected, but not instead of ${d.join(", ")}, skipping transformer`,{updates:i}),[];let g=n?.occurrence??"initial",u="any"===g?c:c.filter(t=>"repeated"===g==(t.writableState.selectedEntityId===m));if(0===u.length)return"initial"===g?f?.("no-match",`Targeting initial selection, but the entity ${d.join(", ")} was res-selected, skipping transformer`,{updates:i}):f?.("no-match",`Targeting repeated selection, but the entity ${d.join(", ")} was selected initially, skipping transformer`,{updates:i}),[];f?.("match",`Entity ${d.join(", ")} selected, processing transformer`,{updates:i});let $=a(s,o,l,i,f);return u.map(t=>{let e=t.writableState.selectedEntityId;return{...$,getSelected$Entity:()=>s.domain.get$Entity(e,$.getNewState()),getDeselected$Entity:()=>s.domain.get$Entity(m,o),entityId:e,update:t}})})),deselected:e=>{if((e?.occurrence==="repeated"||e?.occurrence==="any")&&e?.inFavorOf!==void 0)throw Error("inFavorOf is not supported when occurrence is repeated or any");return l(d,o(!0),f()((i,o,l,s,f)=>{let p=i.filter(t=>r(t)||n(t));if(0===p.length)return f?.("no-event","No selection/deselection updates found, skipping transformer",{updates:i}),[];let c=s.navigationSystem.getActiveSelectionState(o),m=t(c);if(!d.includes(m))return f?.("no-match",`Deselected entity is of type ${m} and not ${d.join(", ")}, skipping transformer`,{updates:i}),[];let y=p.filter(t=>t.writableState.selectedEntityId!==c),g=e?.occurrence??"initial";if(0===y.length&&"initial"===g)return f?.("no-match","Entity has not truly been deselected, skipping transformer",{updates:i}),[];if(y.length>0&&"repeated"===g)return f?.("no-match","Entity has been deselected initially, but target occurrence is repeated, skipping transformer",{updates:i}),[];let u=y.length>0?y:p,$=e?.inFavorOf?u.filter(n=>e.inFavorOf?.includes(t(n.writableState.selectedEntityId))):u;if(0===$.length)return f?.("no-match",`Entity ${c} deselected but not in favor of ${e?.inFavorOf?.join(",")}, skipping transformer`,{updates:i}),[];f?.("match",`Entity ${d.join(", ")} deselected in favor of ${e?.inFavorOf?.join(",")??"any"}, processing transformer`,{updates:i});let h=a(s,o,l,i,f);return $.map(t=>{let e=t.writableState.selectedEntityId;return{...h,getSelected$Entity:()=>s.domain.get$Entity(e,h.getNewState()),getDeselected$Entity:()=>s.domain.get$Entity(c,o),entityId:c,update:t}})}))},violated:n=>s(o(!0),f()((i,r,o,l,s)=>{let{validity:f,state:p}=l.storeSystem.prepareStateEmissionWithoutTransformation(i,r,o);if(f.valid||"uncaught"===f.severity)return s?.("no-event","State is valid, skipping transformer",{validity:f}),[];let c=Array.from(new Set(f.entityViolations.filter(t=>n.includes(t.violation.type)).map(t=>t.entityId)));if(!c)return s?.("no-event",`No violations of type ${n.join(", ")} found, skipping transformer`,{validity:f}),[];let m=c.filter(n=>e(n)&&d.includes(t(n)));if(0===m.length)return s?.("no-match",`No violations of type ${n.join(", ")} found for entity ${d.join(", ")}, skipping transformer`,{validity:f}),[];s?.("no-match",`Violations of type ${n.join(", ")} found for entity ${d.join(", ")}, processing transformer`,{validity:f});let y=a(l,r,o,i,s);return m.map(t=>({...y,getViolated$Entity:()=>l.domain.get$Entity(t,p)}))})),exported:n=>l(d,o(!0),f()((r,o,l,s,f)=>{let p=r.filter(i);if(0===p.length)return f?.("no-event","No export updates found, skipping transformer",{updates:r}),[];let c=p.filter(t=>n.includes(t.writableState.activeState));if(0===c.length)return f?.("no-match",`No export updates matching states ${n.join(", ")}, skipping transformer`,{updates:r}),[];let m=c.filter(n=>e(n.writableState.exportedEntityId)&&d.includes(t(n.writableState.exportedEntityId)));if(0===m.length)return f?.("no-match",`No export updates for entity ${d.join(", ")} with states ${n.join(", ")}, skipping transformer`,{updates:r}),[];f?.("match",`Entity ${d.join(", ")} exported with state ${n.join(", ")}, processing transformer`,{updates:r});let y=a(s,o,l,r,f);return m.map(t=>{let e=t.writableState.exportedEntityId;return{...y,getExported$Entity:()=>s.domain.get$Entity(e,y.getNewState()),entityId:e,update:t,getExportState:()=>t.writableState.activeState}})}))}};
@@ -1,4 +1,4 @@
1
- import { type $DomainEntity, type DomainEntity, type DomainEntityId } from '../../core/model.js';
1
+ import { type $DomainEntity, type DomainEntity, type DomainEntityId } from '../../core/index.js';
2
2
  import type { ViolationTypesOf$Entity } from '../../invariants/violation.js';
3
3
  import type { Actions, ActionsBuilder, AllActions } from './actions-builder.js';
4
4
  import type { BaseTransformerBuilderContext, ContextFactory, ContextWithEntityId, ContextWithUpdate, ContextWithUpdateAndEntityId } from './context.js';
@@ -1 +1 @@
1
- import{isNonNullish as t}from"@salsita-ai/common/utils";import{domainEntityTypeFromId as e,isDomainEntityId as i}from"../../core/model.js";import{updateActions as n}from"./actions-builder.js";export const thenBuilder=(t,e)=>({then:t(e),and:i=>({then:t((t,n,r,o,a)=>{let s=e(t,n,r,o,a);if(!s.length)return[];let l=s.filter(i);return l.length||a?.("no-match","Custom `and` predicate did not match any update, skipping transformer"),l})})});export const tagBuilder=(t,e)=>({...thenBuilder(t,e),withTag:i=>thenBuilder(t,(t,n,r,o,a)=>{let s=e(t,n,r,o,a);if(!s.length)return[];let l=s.filter(t=>i.includes(t.update.updateTag));return l.length||a?.("no-match",`No matching update with tag ${i.join(", ")} found, skipping transformer`,{updates:t}),l})});export const causesBuilder=r=>({entity:o=>({withId:e=>({violation:i=>thenBuilder(n(!0),(n,o,a,s,l)=>{let u=r(n,o,a,s,l);if(!u.length)return[];let{validity:d,state:p}=s.storeSystem.prepareStateEmissionWithoutTransformation(n,o,a);if(d.valid||"uncaught"===d.severity)return l?.("no-event","No violations found, skipping transformer"),[];let f=d.entityViolations.filter(t=>i.includes(t.violation.type)).map(t=>t.entityId);if(0===f.length)return l?.("no-match",`No violations of type ${i.join(", ")} found, skipping transformer`),[];let m=u.map(t=>{let i=e(t);return i?{context:t,candidateEntityIds:Array.isArray(i)?i:[i]}:null}).filter(t);if(0===m.length)return l?.("no-resolve","No entities returned by the selector, skipping transformer"),[];let h=m.map(t=>({...t,violatedEntityIds:t.candidateEntityIds.filter(t=>f.includes(t))})).filter(t=>t.violatedEntityIds.length>0);return 0===h.length?(l?.("no-match",`No violations of type ${i.join(", ")} found for entities returned by the selector, skipping transformer`,{violatedEntityIds:f}),[]):h.map(t=>({...t.context,getViolated$Entities:()=>t.violatedEntityIds.map(t=>s.domain.get$Entity(t,p))}))})}),violation:a=>thenBuilder(n(!0),(n,s,l,u,d)=>{let{validity:p,state:f}=u.storeSystem.prepareStateEmissionWithoutTransformation(n,s,l);if(p.valid||"uncaught"===p.severity)return[];let m=p.entityViolations.map(t=>a.includes(t.violation.type)&&i(t.entityId)&&o.includes(e(t.entityId))?t.entityId:null).filter(t),h=r(n,s,l,u,d);return 0===m.length?[]:h.map(t=>({...t,getViolated$Entities:()=>m.map(t=>u.domain.get$Entity(t,f))}))})})});export const entityAwareCausesBuilder=(t,e)=>({...causesBuilder(e),self:{violation:i=>thenBuilder(n(!0),(n,r,o,a,s)=>{let{validity:l}=a.storeSystem.prepareStateEmissionWithoutTransformation(n,r,o);if(l.valid)return s?.("no-event","No violations found, skipping transformer",{validity:l}),[];if("uncaught"===l.severity)return s?.("no-event","Uncaught exception encountered while calculating new state, skipping transformer",{updates:n}),[];let u=new Set(l.entityViolations.filter(t=>i.includes(t.violation.type)).map(t=>t.entityId));if(0===u.size)return s?.("no-match",`No violations of type ${i.join(", ")} found for the ${t.join(", ")} entities, skipping transformer`,{entityIds:Array.from(u)}),[];let d=e(n,r,o,a,s),p=d.filter(t=>u.has(t.entityId));return 0===p.length&&s?.("no-match",`No violations of type ${i.join(", ")} found for entity ${d.map(t=>t.entityId).join(", ")}, skipping transformer`,{updates:n}),p})}});export const thenAndEntityAwareCausesBuilder=(t,e,i)=>({...tagBuilder(e,i),causes:entityAwareCausesBuilder(t,i)});export const thenAndCausesBuilder=(t,e)=>({...tagBuilder(t,e),causes:causesBuilder(e)});
1
+ import{isNonNullish as t}from"@salsita-ai/common/utils";import{domainEntityTypeFromId as e,isDomainEntityId as i}from"../../core/index.js";import{updateActions as n}from"./actions-builder.js";export const thenBuilder=(t,e)=>({then:t(e),and:i=>({then:t((t,n,r,o,a)=>{let s=e(t,n,r,o,a);if(!s.length)return[];let l=s.filter(i);return l.length||a?.("no-match","Custom `and` predicate did not match any update, skipping transformer"),l})})});export const tagBuilder=(t,e)=>({...thenBuilder(t,e),withTag:i=>thenBuilder(t,(t,n,r,o,a)=>{let s=e(t,n,r,o,a);if(!s.length)return[];let l=s.filter(t=>i.includes(t.update.updateTag));return l.length||a?.("no-match",`No matching update with tag ${i.join(", ")} found, skipping transformer`,{updates:t}),l})});export const causesBuilder=r=>({entity:o=>({withId:e=>({violation:i=>thenBuilder(n(!0),(n,o,a,s,l)=>{let u=r(n,o,a,s,l);if(!u.length)return[];let{validity:d,state:p}=s.storeSystem.prepareStateEmissionWithoutTransformation(n,o,a);if(d.valid||"uncaught"===d.severity)return l?.("no-event","No violations found, skipping transformer"),[];let f=d.entityViolations.filter(t=>i.includes(t.violation.type)).map(t=>t.entityId);if(0===f.length)return l?.("no-match",`No violations of type ${i.join(", ")} found, skipping transformer`),[];let m=u.map(t=>{let i=e(t);return i?{context:t,candidateEntityIds:Array.isArray(i)?i:[i]}:null}).filter(t);if(0===m.length)return l?.("no-resolve","No entities returned by the selector, skipping transformer"),[];let h=m.map(t=>({...t,violatedEntityIds:t.candidateEntityIds.filter(t=>f.includes(t))})).filter(t=>t.violatedEntityIds.length>0);return 0===h.length?(l?.("no-match",`No violations of type ${i.join(", ")} found for entities returned by the selector, skipping transformer`,{violatedEntityIds:f}),[]):h.map(t=>({...t.context,getViolated$Entities:()=>t.violatedEntityIds.map(t=>s.domain.get$Entity(t,p))}))})}),violation:a=>thenBuilder(n(!0),(n,s,l,u,d)=>{let{validity:p,state:f}=u.storeSystem.prepareStateEmissionWithoutTransformation(n,s,l);if(p.valid||"uncaught"===p.severity)return[];let m=p.entityViolations.map(t=>a.includes(t.violation.type)&&i(t.entityId)&&o.includes(e(t.entityId))?t.entityId:null).filter(t),h=r(n,s,l,u,d);return 0===m.length?[]:h.map(t=>({...t,getViolated$Entities:()=>m.map(t=>u.domain.get$Entity(t,f))}))})})});export const entityAwareCausesBuilder=(t,e)=>({...causesBuilder(e),self:{violation:i=>thenBuilder(n(!0),(n,r,o,a,s)=>{let{validity:l}=a.storeSystem.prepareStateEmissionWithoutTransformation(n,r,o);if(l.valid)return s?.("no-event","No violations found, skipping transformer",{validity:l}),[];if("uncaught"===l.severity)return s?.("no-event","Uncaught exception encountered while calculating new state, skipping transformer",{updates:n}),[];let u=new Set(l.entityViolations.filter(t=>i.includes(t.violation.type)).map(t=>t.entityId));if(0===u.size)return s?.("no-match",`No violations of type ${i.join(", ")} found for the ${t.join(", ")} entities, skipping transformer`,{entityIds:Array.from(u)}),[];let d=e(n,r,o,a,s),p=d.filter(t=>u.has(t.entityId));return 0===p.length&&s?.("no-match",`No violations of type ${i.join(", ")} found for entity ${d.map(t=>t.entityId).join(", ")}, skipping transformer`,{updates:n}),p})}});export const thenAndEntityAwareCausesBuilder=(t,e,i)=>({...tagBuilder(e,i),causes:entityAwareCausesBuilder(t,i)});export const thenAndCausesBuilder=(t,e)=>({...tagBuilder(t,e),causes:causesBuilder(e)});
@@ -2,8 +2,7 @@ import type { navigationStateComponent } from '../../components/navigation-state
2
2
  import type { toolStateComponent } from '../../components/tool-state-component.js';
3
3
  import type { ComponentModification, EphemeralRecordModification, StateUpdate } from '../../components/updates.js';
4
4
  import type { viewStateComponent } from '../../components/view-state-component.js';
5
- import type { SystemComponentTypeConstraint } from '../../core/component.js';
6
- import { type $DomainEntity, type DomainEntity, type DomainEntityId } from '../../core/model.js';
5
+ import { type $DomainEntity, type DomainEntity, type DomainEntityId, type SystemComponentTypeConstraint } from '../../core/index.js';
7
6
  import type { DragHandleComponent } from '../../system-components/drag-handle.js';
8
7
  import type { HotspotDragHandleComponent } from '../../system-components/hotspot-drag-handle.js';
9
8
  import type { StateEmissionKind } from '../store-system/store-system.js';
@@ -1 +1 @@
1
- import{domainEntityTypeFromId as t,isDomainEntityId as e}from"../../core/model.js";import{isNavigationUpdate as n,isToolUpdate as o,isViewUpdate as i}from"../navigation-system/navigation-updates.js";import{updateActions as r}from"./actions-builder.js";import{isAutoSnapUpdate as a}from"./auto-snap-transformer.js";import{createBaseContext as s}from"./context.js";import{entityBuilder as m}from"./entity-builder.js";import{tagBuilder as l,thenAndCausesBuilder as f,thenBuilder as d}from"./then-builder.js";let p=n=>({...l(r(!1),n),onEntity:o=>l(r(!1),(i,r,a,s,m)=>{let l=n(i,r,a,s,m);if(!l.length)return[];let f=l.filter(n=>e(n.update.entityId)&&o.includes(t(n.update.entityId)));return f.length||m?.("no-match",`No matching update for entity ${o.join(", ")} found, skipping transformer`,{updates:i}),f.map(t=>{let e=t.update.entityId;return{...t,getOld$Entity:()=>s.domain.get$Entity(e,r),getNew$Entity:()=>s.domain.get$Entity(e,t.getNewState()),entityId:e}})})}),g=(t,e,n)=>p(t()((t,o,i,r,a)=>{let m=t.filter(t=>"modifyComponent"===t.kind);if(0===m.length)return a?.("no-event","No component modification updates found, skipping transformer",{updates:t}),[];let l=m.filter(t=>e.includes(t.componentInstance.componentType));return 0===l.length?(a?.("no-match",`No modification updates for component ${e.join(", ")}, skipping transformer`,{updates:t}),[]):(void 0===n?l:l.filter(t=>n.includes(t.componentInstance.instanceName))).map(e=>({...s(r,o,i,t,a),update:e}))}));export const whenBuilder=t=>({component:e=>({modified:g(t,e),instance:n=>({modified:g(t,e,n)})}),update:e=>({fired:p(t()((t,n,o,i,r)=>{let a=t.filter(t=>e.includes(t.kind));return 0===a.length?(r?.("no-event",`No updates of kind ${e.join(", ")} found, skipping transformer`,{updates:t}),[]):a.map(e=>({...s(i,n,o,t,r),update:e}))}))}),entity:e=>m(e,t),snapped:()=>f(r(!0),t()((t,e,n,o,i)=>{let r=t.filter(a);if(0===r.length)return i?.("no-event","No auto-snap updates found, skipping transformer",{updates:t}),[];i?.("match",`Found ${r.length} auto-snap update(s), processing transformer`);let m=s(o,e,n,t,i);return r.map(t=>({...m,update:t,entityId:t.componentInstance.entityId,snapMatch:t.metadata.snapMatch,snapType:t.metadata.snapType}))})),navigated:e=>f(r(!0),t()((t,o,i,r,a)=>{let m=t.filter(n);if(0===m.length)return a?.("no-event","No navigation updates found, skipping transformer",{updates:t}),[];let l=m.filter(t=>{let n=t.writableState.activeState,i=r.navigationSystem.getActiveNavigationState(o);return(e?.to===void 0||e.to.includes(n))&&(e?.from===void 0||e.from.includes(i))});if(0===l.length)return a?.("no-match",`No navigation updates matching filter from ${e?.from?.join(", ")??"any"} to ${e?.to?.join(", ")??"any"}, skipping transformer`,{updates:t}),[];a?.("match",`Navigation state changed from ${e?.from?.join(", ")??"any"} to ${e?.to?.join(", ")??"any"}, processing transformer`,{updates:t});let f=s(r,o,i,t,a);return l.map(t=>{let e=t.writableState.activeState,n=r.navigationSystem.getActiveNavigationState(o);return{...f,update:t,getFrom:()=>n,getTo:()=>e}})})),viewChanged:e=>f(r(!0),t()((t,n,o,r,a)=>{let m=t.filter(i);if(0===m.length)return a?.("no-event","No view updates found, skipping transformer",{updates:t}),[];let l=m.filter(t=>{let o=t.writableState.activeState,i=r.navigationSystem.getActiveViewState(n);return(e?.to===void 0||e.to.includes(o))&&(e?.from===void 0||e.from.includes(i))});if(0===l.length)return a?.("no-match",`No view updates matching filter from ${e?.from?.join(", ")??"any"} to ${e?.to?.join(", ")??"any"}, skipping transformer`,{updates:t}),[];a?.("match",`View state changed from ${e?.from?.join(", ")??"any"} to ${e?.to?.join(", ")??"any"}, processing transformer`,{updates:t});let f=s(r,n,o,t,a);return l.map(t=>{let e=t.writableState.activeState,o=r.navigationSystem.getActiveViewState(n);return{...f,update:t,getFrom:()=>o,getTo:()=>e}})})),toolChanged:e=>f(r(!0),t()((t,n,i,r,a)=>{let m=t.filter(o);if(0===m.length)return a?.("no-event","No tool updates found, skipping transformer",{updates:t}),[];let l=m.filter(t=>{let o=t.writableState.activeState,i=r.navigationSystem.getActiveToolState(n);return(e?.to===void 0||e.to.includes(o))&&(e?.from===void 0||e.from.includes(i))});if(0===l.length)return a?.("no-match",`No tool updates matching filter from ${e?.from?.join(", ")??"any"} to ${e?.to?.join(", ")??"any"}, skipping transformer`,{updates:t}),[];a?.("match",`Tool state changed from ${e?.from?.join(", ")??"any"} to ${e?.to?.join(", ")??"any"}, processing transformer`,{updates:t});let f=s(r,n,i,t,a);return l.map(t=>{let e=t.writableState.activeState,o=r.navigationSystem.getActiveToolState(n);return{...f,update:t,getFrom:()=>o,getTo:()=>e}})}))});export const createTransformerBuilder=()=>({when:whenBuilder(()=>t=>t),onEmissionsOfKind:t=>({when:whenBuilder(()=>e=>(n,o,i,r,a)=>t.includes(i)?e(n,o,i,r,a):(a?.("no-event",`Emission kind ${i} is not supposed to trigger this transformer, only ${t.join(", ")} is, skipping transformer`,{updates:n}),[]))}),always:d(r(!1),(t,e,n,o,i)=>[s(o,e,n,t,i)])});
1
+ import{domainEntityTypeFromId as t,isDomainEntityId as e}from"../../core/index.js";import{isNavigationUpdate as n,isToolUpdate as o,isViewUpdate as i}from"../navigation-system/navigation-updates.js";import{updateActions as r}from"./actions-builder.js";import{isAutoSnapUpdate as a}from"./auto-snap-transformer.js";import{createBaseContext as s}from"./context.js";import{entityBuilder as m}from"./entity-builder.js";import{tagBuilder as f,thenAndCausesBuilder as l,thenBuilder as d}from"./then-builder.js";let p=n=>({...f(r(!1),n),onEntity:o=>f(r(!1),(i,r,a,s,m)=>{let f=n(i,r,a,s,m);if(!f.length)return[];let l=f.filter(n=>e(n.update.entityId)&&o.includes(t(n.update.entityId)));return l.length||m?.("no-match",`No matching update for entity ${o.join(", ")} found, skipping transformer`,{updates:i}),l.map(t=>{let e=t.update.entityId;return{...t,getOld$Entity:()=>s.domain.get$Entity(e,r),getNew$Entity:()=>s.domain.get$Entity(e,t.getNewState()),entityId:e}})})}),g=(t,e,n)=>p(t()((t,o,i,r,a)=>{let m=t.filter(t=>"modifyComponent"===t.kind);if(0===m.length)return a?.("no-event","No component modification updates found, skipping transformer",{updates:t}),[];let f=m.filter(t=>e.includes(t.componentInstance.componentType));return 0===f.length?(a?.("no-match",`No modification updates for component ${e.join(", ")}, skipping transformer`,{updates:t}),[]):(void 0===n?f:f.filter(t=>n.includes(t.componentInstance.instanceName))).map(e=>({...s(r,o,i,t,a),update:e}))}));export const whenBuilder=t=>({component:e=>({modified:g(t,e),instance:n=>({modified:g(t,e,n)})}),update:e=>({fired:p(t()((t,n,o,i,r)=>{let a=t.filter(t=>e.includes(t.kind));return 0===a.length?(r?.("no-event",`No updates of kind ${e.join(", ")} found, skipping transformer`,{updates:t}),[]):a.map(e=>({...s(i,n,o,t,r),update:e}))}))}),entity:e=>m(e,t),snapped:()=>l(r(!0),t()((t,e,n,o,i)=>{let r=t.filter(a);if(0===r.length)return i?.("no-event","No auto-snap updates found, skipping transformer",{updates:t}),[];i?.("match",`Found ${r.length} auto-snap update(s), processing transformer`);let m=s(o,e,n,t,i);return r.map(t=>({...m,update:t,entityId:t.componentInstance.entityId,snapMatch:t.metadata.snapMatch,snapType:t.metadata.snapType}))})),navigated:e=>l(r(!0),t()((t,o,i,r,a)=>{let m=t.filter(n);if(0===m.length)return a?.("no-event","No navigation updates found, skipping transformer",{updates:t}),[];let f=m.filter(t=>{let n=t.writableState.activeState,i=r.navigationSystem.getActiveNavigationState(o);return(e?.to===void 0||e.to.includes(n))&&(e?.from===void 0||e.from.includes(i))});if(0===f.length)return a?.("no-match",`No navigation updates matching filter from ${e?.from?.join(", ")??"any"} to ${e?.to?.join(", ")??"any"}, skipping transformer`,{updates:t}),[];a?.("match",`Navigation state changed from ${e?.from?.join(", ")??"any"} to ${e?.to?.join(", ")??"any"}, processing transformer`,{updates:t});let l=s(r,o,i,t,a);return f.map(t=>{let e=t.writableState.activeState,n=r.navigationSystem.getActiveNavigationState(o);return{...l,update:t,getFrom:()=>n,getTo:()=>e}})})),viewChanged:e=>l(r(!0),t()((t,n,o,r,a)=>{let m=t.filter(i);if(0===m.length)return a?.("no-event","No view updates found, skipping transformer",{updates:t}),[];let f=m.filter(t=>{let o=t.writableState.activeState,i=r.navigationSystem.getActiveViewState(n);return(e?.to===void 0||e.to.includes(o))&&(e?.from===void 0||e.from.includes(i))});if(0===f.length)return a?.("no-match",`No view updates matching filter from ${e?.from?.join(", ")??"any"} to ${e?.to?.join(", ")??"any"}, skipping transformer`,{updates:t}),[];a?.("match",`View state changed from ${e?.from?.join(", ")??"any"} to ${e?.to?.join(", ")??"any"}, processing transformer`,{updates:t});let l=s(r,n,o,t,a);return f.map(t=>{let e=t.writableState.activeState,o=r.navigationSystem.getActiveViewState(n);return{...l,update:t,getFrom:()=>o,getTo:()=>e}})})),toolChanged:e=>l(r(!0),t()((t,n,i,r,a)=>{let m=t.filter(o);if(0===m.length)return a?.("no-event","No tool updates found, skipping transformer",{updates:t}),[];let f=m.filter(t=>{let o=t.writableState.activeState,i=r.navigationSystem.getActiveToolState(n);return(e?.to===void 0||e.to.includes(o))&&(e?.from===void 0||e.from.includes(i))});if(0===f.length)return a?.("no-match",`No tool updates matching filter from ${e?.from?.join(", ")??"any"} to ${e?.to?.join(", ")??"any"}, skipping transformer`,{updates:t}),[];a?.("match",`Tool state changed from ${e?.from?.join(", ")??"any"} to ${e?.to?.join(", ")??"any"}, processing transformer`,{updates:t});let l=s(r,n,i,t,a);return f.map(t=>{let e=t.writableState.activeState,o=r.navigationSystem.getActiveToolState(n);return{...l,update:t,getFrom:()=>o,getTo:()=>e}})}))});export const createTransformerBuilder=()=>({when:whenBuilder(()=>t=>t),onEmissionsOfKind:t=>({when:whenBuilder(()=>e=>(n,o,i,r,a)=>t.includes(i)?e(n,o,i,r,a):(a?.("no-event",`Emission kind ${i} is not supposed to trigger this transformer, only ${t.join(", ")} is, skipping transformer`,{updates:n}),[]))}),always:d(r(!1),(t,e,n,o,i)=>[s(o,e,n,t,i)])});
@@ -1,5 +1,5 @@
1
1
  import type { ObservableWithLastValue } from '@salsita-ai/common/utils';
2
- import type { $DomainEntity, DomainEntity } from '../core/model.js';
2
+ import type { $DomainEntity, DomainEntity } from '../core/index.js';
3
3
  import type { DomainContextSelectors } from '../domain-runtime/domain-context/index.js';
4
4
  import type { ResetStateEmission, StateEmission } from './store-system/store-system.js';
5
5
  export interface UndoCapabilities {
@@ -1,7 +1,5 @@
1
1
  import type { FilteredOutComponentSnapshot, ManyComponentFilter, OneComponentFilter } from '../../components/component-reader-types.js';
2
- import { type ComponentSnapshot, type SystemComponentTypeConstraint } from '../../core/component.js';
3
- import type { DomainEntity, EntityId } from '../../core/model.js';
4
- import type { DomainState } from '../../core/state.js';
2
+ import { type ComponentSnapshot, type DomainEntity, type DomainState, type EntityId, type SystemComponentTypeConstraint } from '../../core/index.js';
5
3
  import type { DomainContextSelectors } from './selectors.js';
6
4
  export interface ComponentReaderContext {
7
5
  readonly selectors: DomainContextSelectors;
@@ -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{getComponentSystemFilterState as e,isComponentActive as n}from"../../components/system-component-filter.js";import{domainEntityTypeFromId 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,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,6 +1,5 @@
1
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';
2
+ import { type AnyDomain, type AnyDomainFactory, type AnyExpressionContext, type DomainEntity, type DomainMode, type SystemComponentTypeConstraint } from '../../core/index.js';
4
3
  import { type AnyActionSystem } from '../../domain-context/action-system/action-system.js';
5
4
  import { type AnyDimensionSystem } from '../../domain-context/dimension-system/dimension-system.js';
6
5
  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{prepareActionImplementations as t}from"../../actions/prepare-action-implementations.js";import{Domain as n,createInitialDomainState 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 m}from"../../domain-context/store-system/store-system.js";import{UndoSystem as l}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 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)=>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),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 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 m({selectors:ez,domainServicesSelectors:z,environmentSelectors:L}),eK=new r({selectors:ez,domainServicesSelectors:z}),eQ=new l({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 C({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 t}from"@salsita-ai/contracts/api";import{resolveElementModules as e}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"../../components/domain-component-optic.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=e(s.elements),d=(t=>{let e={};for(let a of t)e[a.name]=(void 0)??a.name;return e})(m),l=(t=>{let e={},a=0;for(let n of t)if("entity"===n.type||"layout"===n.type)e[n.name]=(void 0)??n.name;else{let t=`icon:${a}`;e[t]=(void 0)??`${t}:${n.elements.length}`,a+=1}return e})(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(t),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:t=>n(p,y,t),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,6 +1,6 @@
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';
3
+ import type { AssistantResolvedManifest, ChunksSpec, DataSpec, ElementRegistration, HandlerRegistration } from '../../application/index.js';
4
4
  import type { AnyDomainComponentOptic } from '../../components/index.js';
5
5
  import type { ActionDefinitions, Any$EntityReflections, AnyActionImplementations, AnyAliasMap, AnyAllowedRootEntityTypes, AnyDomainFactory, AnyEntityReflections, AnyExpressions, AnyProductPreset, DomainEntity, MigrateFunction } from '../../core/index.js';
6
6
  import type { AnyCreateTransformersFactory } from '../../domain-context/store-system/store-system.js';
@@ -46,10 +46,10 @@ export interface ApplicationConfiguratorSpec {
46
46
  readonly alwaysExpand: boolean;
47
47
  readonly theme: ThemeOptions;
48
48
  /**
49
- * Experimental assistant manifest with its generated GraphQL SDL, or `null` when the application
49
+ * Resolved assistant manifest used to rebuild GraphQL SDL, or `null` when the application
50
50
  * spec declares no `assistant` section. Replaced by editor hot reload when the section changes.
51
51
  */
52
- readonly assistant: AssistantManifest | null;
52
+ readonly assistant: AssistantResolvedManifest | null;
53
53
  /**
54
54
  * When true, resource urls are not suffixed with the `?did=<deploymentId>` cache-busting
55
55
  * query — useful for demos serving local blob urls.
@@ -1,10 +1,8 @@
1
1
  export * from './core/index.js';
2
2
  export { createActionFactory } from './actions/action-factory.js';
3
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
4
  export { createCustomInvariantFactory, type StaticallyDefinedViolations } from './invariants/custom-invariants.js';
7
- export { InvariantBuilder } from './invariants/invariants.js';
5
+ export { InvariantBuilder, resolveInvariantModules } from './invariants/invariants.js';
8
6
  export type { AliasedInvariants, Invariant } from './invariants/invariants.js';
9
7
  export type { Violation, ViolationSeverity, ViolationTypesOf$Entity, EntityViolation } from './invariants/violation.js';
10
8
  export { compareSeverity } from './invariants/violation.js';
@@ -26,7 +24,7 @@ export { viewportStateComponent, isViewportStateComponentSnapshot, isSystemViewp
26
24
  export { type ComponentSystemFilterState, type ComponentSystemFilterProps, ComponentSystemFilterPropsSchema, getComponentSystemFilterState, CombinedComponentFilterSchema, type GradualComponentSystemFilter, type FilterMismatchReason, type IdOrWithId, } from './components/system-component-filter.js';
27
25
  export { ComponentSystemFilterSchema, type ComponentSystemFilter, type DeclarativeComponentSystemFilter, } from './components/legacy-filter.js';
28
26
  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';
27
+ export { DomainComponentOpticBuilder, type AnyDomainComponentOptic, type DomainComponentOptic, resolveComponentOpticModules, } from './components/domain-component-optic.js';
30
28
  export { groupComponentsByEntityIdAndName, isEqualGroupedComponentSnapshots, type GroupedComponentSnapshots, } from './components/group-components-by-entity-id-and-name.js';
31
29
  export { SystemComponentBuilder } from './components/system-component-builder.js';
32
30
  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';
@@ -41,6 +39,7 @@ export * from './sketching/index.js';
41
39
  export * from './projections/index.js';
42
40
  export * from './admin-domain/index.js';
43
41
  export * from './application/index.js';
42
+ export { type ProjectModule, resolveActionModules, resolveExpressionModules } from './project-modules/index.js';
44
43
  export * from './scene/index.js';
45
44
  export { getAllPhxDefinitions } from './system-definitions.js';
46
45
  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{createActionFactory}from"./actions/action-factory.js";export{findActionImplementationConflicts}from"./actions/prepare-action-implementations.js";export{createCustomInvariantFactory}from"./invariants/custom-invariants.js";export{InvariantBuilder,resolveInvariantModules}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,resolveComponentOpticModules}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{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";
@@ -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 { Invariant } from './invariants.js';
4
3
  import type { Violation } from './violation.js';
5
4
  export declare const createInvariant: <VIOLATION_TYPE extends string>(evaluate: (selfId: DomainEntityId<string>, state: DomainState<DomainEntity<string>>) => ReadonlyArray<Violation<VIOLATION_TYPE>>) => Invariant<DomainEntity<string>, DomainEntity<string>, Record<string, unknown>, Record<string, unknown>, Record<string, unknown>, DomainEntity<string>, VIOLATION_TYPE>;
@@ -1,7 +1,5 @@
1
1
  import type { OmitEmpty, OmitNever } from '@salsita-ai/common/utils';
2
- import type { ExpandAlias, TypeOrAlias } from '../core/alias.js';
3
- import type { $DomainEntity, DomainEntity } from '../core/model.js';
4
- import type { CustomExpression } from '../expressions/custom-expression.js';
2
+ import type { $DomainEntity, CustomExpression, DomainEntity, ExpandAlias, TypeOrAlias } from '../core/index.js';
5
3
  import type { Invariant } from './invariants.js';
6
4
  import type { Violation } from './violation.js';
7
5
  export type CustomInvariantsFromBlueprints<ENTITIES extends DomainEntity<string>, ALLOWED_ROOT_ENTITIES extends ENTITIES, $MAP extends Record<ENTITIES['type'], $DomainEntity<ENTITIES>>, PUBLISHED_DATA extends Record<string, unknown>, SESSION_DATA extends Record<string, unknown>, FRONTEND_DATA extends Record<string, unknown>, BLUEPRINTS extends Partial<Record<keyof $MAP & string, Record<string, boolean | string>>>> = {
@@ -1,8 +1,6 @@
1
1
  import type { OmitNever } from '@salsita-ai/common/utils';
2
- import { type AliasMap, type EventualAlias, type ExpandAlias, type ExtractFromAliasedRecord, type TypeOrAlias } from '../core/alias.js';
3
- import type { AnonymousExpression, ExpressionContext } from '../core/expression.js';
4
- import type { $DomainEntity, DomainEntity, EntityByType } from '../core/model.js';
5
- import type { DomainState } from '../core/state.js';
2
+ import { type $DomainEntity, type AliasMap, type AnonymousExpression, type DomainEntity, type DomainState, type EntityByType, type EventualAlias, type ExpandAlias, type ExpressionContext, type ExtractFromAliasedRecord, type TypeOrAlias } from '../core/index.js';
3
+ import { type ProjectModule } from '../project-modules/index.js';
6
4
  import { type Violation } from './violation.js';
7
5
  export interface Invariant<ENTITIES extends DomainEntity<string>, ALLOWED_ROOT_ENTITIES extends ENTITIES, PUBLISHED_DATA extends Record<string, unknown>, SESSION_DATA extends Record<string, unknown>, FRONTEND_DATA extends Record<string, unknown>, ENTITY extends ENTITIES, VIOLATION_TYPE extends string> {
8
6
  evaluate(selfId: ENTITY['id'], state: DomainState<ENTITIES>, ctx: ExpressionContext<ENTITIES, ALLOWED_ROOT_ENTITIES, PUBLISHED_DATA, SESSION_DATA, FRONTEND_DATA>): ReadonlyArray<Violation<VIOLATION_TYPE>>;
@@ -38,10 +36,18 @@ type ExpressionsFromInvariants<ENTITIES extends DomainEntity<string>, ALLOWED_RO
38
36
  };
39
37
  };
40
38
  type BuildViolationExpressions<ENTITIES extends DomainEntity<string>, ALLOWED_ROOT_ENTITIES extends ENTITIES, $MAP extends Record<ENTITIES['type'], $DomainEntity<ENTITIES>>, PUBLISHED_DATA extends Record<string, unknown>, SESSION_DATA extends Record<string, unknown>, FRONTEND_DATA extends Record<string, unknown>, INVARIANTS extends Partial<Record<ENTITIES['type'], ReadonlyArray<Invariant<ENTITIES, ALLOWED_ROOT_ENTITIES, PUBLISHED_DATA, SESSION_DATA, FRONTEND_DATA, ENTITIES, string>>>>> = Record<never, never> extends ConflictingInvariants<ENTITIES, ALLOWED_ROOT_ENTITIES, PUBLISHED_DATA, SESSION_DATA, FRONTEND_DATA, DeclaredInvariants<ENTITIES, ALLOWED_ROOT_ENTITIES, $MAP, PUBLISHED_DATA, SESSION_DATA, FRONTEND_DATA>, INVARIANTS> ? () => ExpressionsFromInvariants<ENTITIES, ALLOWED_ROOT_ENTITIES, PUBLISHED_DATA, SESSION_DATA, FRONTEND_DATA, INVARIANTS> : never;
39
+ type AnyInvariant = Invariant<any, any, any, any, any, any, string>;
40
+ /** Validates the `src/invariants/` files and concatenates their invariants per entity type or alias. */
41
+ export declare const resolveInvariantModules: (modules: readonly ProjectModule[]) => Readonly<Record<string, readonly AnyInvariant[]>>;
41
42
  export declare class InvariantBuilder<ENTITIES extends DomainEntity<string>, ALLOWED_ROOT_ENTITIES extends ENTITIES, $MAP extends Record<ENTITIES['type'], $DomainEntity<ENTITIES>>, PUBLISHED_DATA extends Record<string, unknown>, SESSION_DATA extends Record<string, unknown>, FRONTEND_DATA extends Record<string, unknown>, ALIASES extends Record<string, ENTITIES>, INVARIANTS extends Partial<Record<ENTITIES['type'], ReadonlyArray<Invariant<ENTITIES, ALLOWED_ROOT_ENTITIES, PUBLISHED_DATA, SESSION_DATA, FRONTEND_DATA, ENTITIES, string>>>> = Record<never, never>> {
42
43
  private readonly aliasMap;
43
44
  private readonly invariants;
44
45
  constructor(aliasMap: AliasMap<ALIASES>, invariants?: INVARIANTS);
46
+ /**
47
+ * Adds the invariants of the `src/invariants/` files, as the generated barrel lists them, after
48
+ * checking each file against the folder's contract.
49
+ */
50
+ withInvariantModules(modules: readonly ProjectModule[]): InvariantBuilder<ENTITIES, ALLOWED_ROOT_ENTITIES, $MAP, PUBLISHED_DATA, SESSION_DATA, FRONTEND_DATA, ALIASES, ExpandAndMergeInvariants<ENTITIES, ALLOWED_ROOT_ENTITIES, PUBLISHED_DATA, SESSION_DATA, FRONTEND_DATA, ALIASES, INVARIANTS, AliasedInvariants<ENTITIES, ALLOWED_ROOT_ENTITIES, PUBLISHED_DATA, SESSION_DATA, FRONTEND_DATA, ALIASES, string>>>;
45
51
  withInvariants<ALIASED_INVARIANTS extends AliasedInvariants<ENTITIES, ALLOWED_ROOT_ENTITIES, PUBLISHED_DATA, SESSION_DATA, FRONTEND_DATA, ALIASES, string>>(aliasedInvariants: ALIASED_INVARIANTS): InvariantBuilder<ENTITIES, ALLOWED_ROOT_ENTITIES, $MAP, PUBLISHED_DATA, SESSION_DATA, FRONTEND_DATA, ALIASES, ExpandAndMergeInvariants<ENTITIES, ALLOWED_ROOT_ENTITIES, PUBLISHED_DATA, SESSION_DATA, FRONTEND_DATA, ALIASES, INVARIANTS, ALIASED_INVARIANTS>>;
46
52
  /**
47
53
  * DO NOT USE in runtime!
@@ -1 +1 @@
1
- import{expandAlias as a}from"../core/alias.js";export class InvariantBuilder{aliasMap;invariants;constructor(a,i={}){this.aliasMap=a,this.invariants=i}withInvariants(i){let t={...this.invariants};return Object.entries(i).forEach(([i,s])=>{a(this.aliasMap,i).forEach(a=>{t[a]=[...t[a]??[],...s]})}),new InvariantBuilder(this.aliasMap,t)}_conflicts={};buildViolationExpressions=()=>{let a={};return Object.entries(this.invariants).forEach(([i,t])=>{a[i]={$violations:{evaluate:(a,i,s)=>t.flatMap(t=>t.evaluate(a,i,s)),meta:{}}}}),a}}
1
+ import{expandAlias as t}from"../core/index.js";import{SHARED_FOLDER_HINT as e,createContractError as a,isRecord as i}from"../project-modules/index.js";let r={expected:"an object of invariant lists keyed by entity type or alias",fix:`Create it with phx.domain.implementCustomInvariants({ ... }) (phx.domain.admin.implementCustomInvariants({ ... }) under src/admin/), ${e}.`},n=t=>i(t)&&"function"==typeof t.evaluate,s=t=>i(t)&&Object.values(t).every(t=>Array.isArray(t)&&t.every(n));export const resolveInvariantModules=t=>{let e={};for(let i of t){if(!s(i.exports))throw a(i.origin,r,i.exports);for(let[t,a]of Object.entries(i.exports))e[t]=[...e[t]??[],...a]}return e};export class InvariantBuilder{aliasMap;invariants;constructor(t,e={}){this.aliasMap=t,this.invariants=e}withInvariantModules(t){return this.withInvariants(resolveInvariantModules(t))}withInvariants(e){let a={...this.invariants};return Object.entries(e).forEach(([e,i])=>{t(this.aliasMap,e).forEach(t=>{a[t]=[...a[t]??[],...i]})}),new InvariantBuilder(this.aliasMap,a)}_conflicts={};buildViolationExpressions=()=>{let t={};return Object.entries(this.invariants).forEach(([e,a])=>{t[e]={$violations:{evaluate:(t,e,i)=>a.flatMap(a=>a.evaluate(t,e,i)),meta:{}}}}),t}}
@@ -1,6 +1,6 @@
1
1
  import type { I18n } from '@lingui/core';
2
2
  import type { Localizable } from '@salsita-ai/common/utils';
3
- import type { $DomainEntity, DomainEntity, EntityId } from '../core/model.js';
3
+ import type { $DomainEntity, DomainEntity, EntityId } from '../core/index.js';
4
4
  import type { StateEmission } from '../domain-context/store-system/store-system.js';
5
5
  /**
6
6
  * An **ORDERED** list of violation severities.
@@ -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";