@salsita-ai/sdk 0.50.0-develop.2be7811d51 → 0.50.0-develop.2f8d91de91

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 (1156) hide show
  1. package/README.md +3 -3
  2. package/dist/admin/create-admin-pages-from-spec.d.ts +1 -1
  3. package/dist/application-spec/core/components/component-filter.d.ts +53 -0
  4. package/dist/application-spec/core/components/component-filter.js +1 -0
  5. package/dist/application-spec/core/components/index.d.ts +2 -0
  6. package/dist/application-spec/core/components/index.js +1 -0
  7. package/dist/application-spec/core/components/sdk-code-ref.d.ts +9 -0
  8. package/dist/application-spec/core/components/sdk-code-ref.js +1 -0
  9. package/dist/application-spec/core/enhanced-json-value.d.ts +0 -68
  10. package/dist/application-spec/core/enhanced-json-value.js +1 -1
  11. package/dist/application-spec/core/expressions/index.d.ts +2 -0
  12. package/dist/application-spec/core/expressions/index.js +1 -0
  13. package/dist/application-spec/core/expressions/relation-expression-params.d.ts +11 -0
  14. package/dist/application-spec/core/expressions/sdk-expression-implementation.d.ts +24 -0
  15. package/dist/application-spec/core/expressions/sdk-expression-implementation.js +1 -0
  16. package/dist/application-spec/core/index.d.ts +2 -0
  17. package/dist/application-spec/core/index.js +1 -1
  18. package/dist/application-spec/core/json-value.d.ts +1 -1
  19. package/dist/application-spec/{core → enhanced-json}/eval-to-constant.d.ts +1 -1
  20. package/dist/application-spec/enhanced-json/index.d.ts +4 -0
  21. package/dist/application-spec/enhanced-json/index.js +1 -0
  22. package/dist/application-spec/enhanced-json/is-enhanced-json-array.d.ts +2 -0
  23. package/dist/application-spec/enhanced-json/is-enhanced-json-array.js +1 -0
  24. package/dist/application-spec/enhanced-json/resolve-enhanced-json-value.d.ts +18 -0
  25. package/dist/application-spec/enhanced-json/resolve-enhanced-json-value.js +1 -0
  26. package/dist/application-spec/enhanced-json/schema-from-value.d.ts +24 -0
  27. package/dist/application-spec/enhanced-json/schema-from-value.js +1 -0
  28. package/dist/application-spec/enhanced-json/stringify-enhanced-json-value.d.ts +14 -0
  29. package/dist/application-spec/enhanced-json/stringify-enhanced-json-value.js +1 -0
  30. package/dist/application-spec/enhanced-json/validate-enhanced-json-value-caps.d.ts +12 -0
  31. package/dist/application-spec/enhanced-json/validate-enhanced-json-value-caps.js +1 -0
  32. package/dist/application-spec/enhanced-json/validate-no-legacy-code-ref.d.ts +13 -0
  33. package/dist/application-spec/enhanced-json/validate-no-legacy-code-ref.js +1 -0
  34. package/dist/application-spec/errors/diagnostic-codes.d.ts +9 -0
  35. package/dist/application-spec/errors/diagnostic-codes.js +1 -1
  36. package/dist/application-spec/errors/diagnostic-messages.d.ts +12 -0
  37. package/dist/application-spec/errors/diagnostic-messages.js +1 -1
  38. package/dist/application-spec/generate-application/code/common/index.d.ts +1 -0
  39. package/dist/application-spec/generate-application/code/common/index.js +1 -1
  40. package/dist/application-spec/generate-application/code/common/project-module-list.d.ts +8 -0
  41. package/dist/application-spec/generate-application/code/common/project-module-list.js +3 -0
  42. package/dist/application-spec/generate-application/code/domain-runtime-files.js +1 -1
  43. package/dist/application-spec/generate-application/code/project-scaffolding.d.ts +8 -1
  44. package/dist/application-spec/generate-application/code/project-scaffolding.js +2 -2
  45. package/dist/application-spec/generate-application/code/templates/admin-domain-code.d.ts +1 -2
  46. package/dist/application-spec/generate-application/code/templates/admin-domain-code.js +6 -14
  47. package/dist/application-spec/generate-application/code/templates/admin-frontend-code.d.ts +1 -2
  48. package/dist/application-spec/generate-application/code/templates/admin-frontend-code.js +4 -4
  49. package/dist/application-spec/generate-application/code/templates/configurator-config.js +6 -4
  50. package/dist/application-spec/generate-application/code/templates/configurator-domain-code.d.ts +1 -2
  51. package/dist/application-spec/generate-application/code/templates/configurator-domain-code.js +7 -16
  52. package/dist/application-spec/generate-application/code/templates/configurator-frontend-code.d.ts +1 -2
  53. package/dist/application-spec/generate-application/code/templates/configurator-frontend-code.js +7 -9
  54. package/dist/application-spec/generate-application/code/templates/domain-spec/generate-assistant.d.ts +2 -2
  55. package/dist/application-spec/generate-application/code/templates/domain-spec/generate-assistant.js +1 -1
  56. package/dist/application-spec/generate-application/code/templates/domain-spec/generate-component-optics.js +4 -4
  57. package/dist/application-spec/generate-application/code/templates/domain-spec/generate-defaults.d.ts +4 -2
  58. package/dist/application-spec/generate-application/code/templates/domain-spec/generate-defaults.js +1 -1
  59. package/dist/application-spec/generate-application/code/templates/domain-spec/generate-domain-block.js +56 -56
  60. package/dist/application-spec/generate-application/code/templates/domain-spec/generate-invariants.d.ts +1 -1
  61. package/dist/application-spec/generate-application/code/templates/domain-spec/generate-invariants.js +1 -1
  62. package/dist/application-spec/generate-application/code/templates/domain-spec/generate-phx-globals.js +3 -0
  63. package/dist/application-spec/generate-application/code/templates/domain-spec/generate-relation-expressions.js +1 -1
  64. package/dist/application-spec/generate-application/code/templates/domain-spec/generate-resources.d.ts +6 -8
  65. package/dist/application-spec/generate-application/code/templates/domain-spec/generate-resources.js +11 -11
  66. package/dist/application-spec/generate-application/code/templates/domain-spec/index.d.ts +1 -1
  67. package/dist/application-spec/generate-application/code/templates/domain-spec/index.js +1 -1
  68. package/dist/application-spec/generate-application/code/templates/domain-spec.js +12 -12
  69. package/dist/application-spec/generate-application/code/templates/domain.js +5 -5
  70. package/dist/application-spec/generate-application/code/templates/globals.js +5 -4
  71. package/dist/application-spec/generate-application/code/templates/index.d.ts +0 -7
  72. package/dist/application-spec/generate-application/code/templates/index.js +1 -1
  73. package/dist/application-spec/generate-application/code/templates/package-json.js +1 -1
  74. package/dist/application-spec/generate-application/code/templates/skills/phoenix-create-configurator-skill.js +93 -41
  75. package/dist/application-spec/generate-application/code/templates/skills/phoenix-review-skill.js +9 -3
  76. package/dist/application-spec/generate-application/code/templates/skills/phoenix-skill.js +1 -1
  77. package/dist/application-spec/generate-application/code/templates/skills/sdk-content.d.ts +33 -11
  78. package/dist/application-spec/generate-application/code/templates/skills/sdk-content.js +18 -6
  79. package/dist/application-spec/generate-application/code/templates/webhook-builders.js +9 -4
  80. package/dist/application-spec/generate-application/code/templates/webhooks-config.js +2 -2
  81. package/dist/application-spec/generate-application/runtime/application-runtime.d.ts +1 -3
  82. package/dist/application-spec/generate-application/runtime/configurator-runtime/configurator-runtime.d.ts +1 -3
  83. package/dist/application-spec/generate-application/runtime/sections/assistant-runtime.d.ts +4 -3
  84. package/dist/application-spec/generate-application/runtime/sections/assistant-runtime.js +1 -1
  85. package/dist/application-spec/generate-application/runtime/sections/build-sdk-optic.d.ts +1 -1
  86. package/dist/application-spec/generate-application/runtime/sections/build-sdk-optic.js +1 -1
  87. package/dist/application-spec/generate-application/runtime/sections/component-optic.d.ts +2 -1
  88. package/dist/application-spec/generate-application/runtime/sections/expression-runtime.js +1 -1
  89. package/dist/application-spec/generate-application/runtime/sections/transformers-runtime.d.ts +2 -4
  90. package/dist/application-spec/index.d.ts +1 -0
  91. package/dist/application-spec/index.js +1 -1
  92. package/dist/application-spec/parse-application-files/categorize/module-analysis.d.ts +1 -1
  93. package/dist/application-spec/parse-application-files/categorize/module-analysis.js +1 -1
  94. package/dist/application-spec/parse-application-files/raw-spec/raw-assistant.d.ts +16 -3
  95. package/dist/application-spec/parse-application-files/raw-spec/raw-assistant.js +1 -1
  96. package/dist/application-spec/parse-application-files/raw-spec/raw-spec-file.js +1 -1
  97. package/dist/application-spec/parse-application-files/spec/application/admin-spec/admin-spec.js +1 -1
  98. package/dist/application-spec/parse-application-files/spec/application/configurator-spec/configurator-spec.js +1 -1
  99. package/dist/application-spec/parse-application-files/spec/components/component-entry.d.ts +1 -9
  100. package/dist/application-spec/parse-application-files/spec/components/component-entry.js +1 -1
  101. package/dist/application-spec/parse-application-files/spec/components/component-filter.d.ts +1 -54
  102. package/dist/application-spec/parse-application-files/spec/components/component-filter.js +1 -1
  103. package/dist/application-spec/parse-application-files/spec/components/index.d.ts +1 -1
  104. package/dist/application-spec/parse-application-files/spec/components/index.js +1 -1
  105. package/dist/application-spec/parse-application-files/spec/expressions/expression.d.ts +1 -28
  106. package/dist/application-spec/parse-application-files/spec/expressions/expression.js +1 -1
  107. package/dist/application-spec/parse-application-files/spec/expressions/expressions.d.ts +1 -1
  108. package/dist/application-spec/parse-application-files/spec/expressions/expressions.js +1 -1
  109. package/dist/application-spec/parse-application-files/spec/expressions/index.d.ts +0 -1
  110. package/dist/application-spec/parse-application-files/spec/expressions/index.js +1 -1
  111. package/dist/application-spec/parse-application-files/spec/expressions/memo-eval-plan.js +1 -1
  112. package/dist/application-spec/parse-application-files/spec/expressions/user-expressions.js +1 -1
  113. package/dist/application-spec/parse-application-files/spec/model/defaults.d.ts +7 -2
  114. package/dist/application-spec/parse-application-files/spec/model/defaults.js +1 -1
  115. package/dist/application-spec/parse-application-files/spec/relations/reference-field-type.d.ts +25 -0
  116. package/dist/application-spec/parse-application-files/spec/relations/reference-field-type.js +1 -0
  117. package/dist/application-spec/parse-application-files/spec/relations/relation-field-mismatch.d.ts +46 -0
  118. package/dist/application-spec/parse-application-files/spec/relations/relation-field-mismatch.js +1 -0
  119. package/dist/application-spec/parse-application-files/spec/relations/relations.d.ts +4 -3
  120. package/dist/application-spec/parse-application-files/spec/relations/relations.js +1 -1
  121. package/dist/application-spec/parse-application-files/spec/sections/assistant/assistant-field-type.d.ts +3 -8
  122. package/dist/application-spec/parse-application-files/spec/sections/assistant/assistant-field-type.js +1 -1
  123. package/dist/application-spec/parse-application-files/spec/sections/assistant/assistant-schema.d.ts +9 -43
  124. package/dist/application-spec/parse-application-files/spec/sections/assistant/assistant-schema.js +1 -1
  125. package/dist/application-spec/parse-application-files/spec/sections/assistant/assistant-server-settings.d.ts +2 -2
  126. package/dist/application-spec/parse-application-files/spec/sections/assistant/assistant.d.ts +5 -21
  127. package/dist/application-spec/parse-application-files/spec/sections/infra.d.ts +2 -0
  128. package/dist/application-spec/parse-application-files/spec/sections/infra.js +1 -1
  129. package/dist/client/authorized-client.d.ts +3 -1
  130. package/dist/client/authorized-client.js +1 -1
  131. package/dist/client/contract.d.ts +34 -0
  132. package/dist/client/contract.js +1 -1
  133. package/dist/client/index.d.ts +2 -2
  134. package/dist/client/index.js +1 -1
  135. package/dist/client/local-authorized-client.d.ts +3 -1
  136. package/dist/client/local-authorized-client.js +1 -1
  137. package/dist/client/memory-authorized-client.d.ts +3 -1
  138. package/dist/client/memory-authorized-client.js +1 -1
  139. package/dist/client/phoenix-api.d.ts +367 -30
  140. package/dist/configurator/application-runtime/extensions/create-configurator-extensions.js +1 -1
  141. package/dist/configurator/application-runtime/extensions/selectors.d.ts +3 -1
  142. package/dist/configurator/application-runtime/extensions/selectors.js +1 -1
  143. package/dist/configurator/application-runtime/extensions/systems/assistant-system/assistant-system.d.ts +107 -6
  144. package/dist/configurator/application-runtime/extensions/systems/assistant-system/assistant-system.js +1 -1
  145. package/dist/configurator/application-runtime/extensions/systems/drag-and-drop-system/drag-and-drop-system.d.ts +3 -3
  146. package/dist/configurator/application-runtime/extensions/systems/graphql-system/entity-meta.js +1 -1
  147. package/dist/configurator/application-runtime/extensions/systems/graphql-system/graphql-system.d.ts +14 -4
  148. package/dist/configurator/application-runtime/extensions/systems/graphql-system/graphql-system.js +1 -1
  149. package/dist/configurator/application-runtime/extensions/systems/graphql-system/inject-assistant-lenses.d.ts +11 -0
  150. package/dist/configurator/application-runtime/extensions/systems/graphql-system/inject-assistant-lenses.js +1 -0
  151. package/dist/configurator/application-runtime/extensions/systems/index.d.ts +1 -1
  152. package/dist/configurator/application-runtime/extensions/systems/layout-system/layout-system.d.ts +2 -2
  153. package/dist/configurator/application-runtime/extensions/systems/layout-system/layout-system.js +1 -1
  154. package/dist/configurator/common/configurator-interface.d.ts +17 -1
  155. package/dist/configurator/common/configurator-interface.js +1 -1
  156. package/dist/configurator/common/frontend-analytics.d.ts +2 -0
  157. package/dist/configurator/common/frontend-analytics.js +1 -1
  158. package/dist/configurator/common/index.d.ts +1 -0
  159. package/dist/configurator/common/index.js +1 -1
  160. package/dist/configurator/common/use-finalize-action.d.ts +27 -0
  161. package/dist/configurator/common/use-finalize-action.js +1 -0
  162. package/dist/configurator/configurator-context/configurator-hooks/layout-hooks.d.ts +1 -1
  163. package/dist/configurator/pages/DefaultConfiguratorLayout.d.ts +6 -0
  164. package/dist/configurator/pages/DefaultConfiguratorLayout.js +1 -0
  165. package/dist/configurator/pages/LoadedConfiguratorDetailPage.js +1 -1
  166. package/dist/configurator/pages/configurator-layout-name.d.ts +2 -0
  167. package/dist/configurator/pages/configurator-layout-name.js +1 -0
  168. package/dist/configurator/pages/default-configurator-elements.d.ts +7 -0
  169. package/dist/configurator/pages/default-configurator-elements.js +1 -0
  170. package/dist/configurator/pages/index.d.ts +1 -0
  171. package/dist/configurator/pages/index.js +1 -1
  172. package/dist/configurator/scene/scene-controls/hotspot-drag-handle/HotspotDragHandle.d.ts +1 -1
  173. package/dist/configurator/scene/scene-controls/hotspot-drag-handle/HotspotDragSceneHandle.d.ts +1 -1
  174. package/dist/configurator/scene/scene-entity/dimension-indicators/DimensionIndicator.d.ts +1 -1
  175. package/dist/configurator/scene/scene-entity/dimension-indicators/DimensionIndicatorInternal.d.ts +1 -1
  176. package/dist/configurator/scene/scene-entity/drag-and-drop/shared.d.ts +2 -2
  177. package/dist/configurator/scene/scene-entity/drag-and-drop/use-drag-object.d.ts +1 -1
  178. package/dist/configurator/scene/scene-entity/materials/RemoteReplacedMaterial.js +1 -1
  179. package/dist/configurator/scene/scene-entity/objects/SceneEntityObjectTextDecal.d.ts +1 -1
  180. package/dist/configurator/ui/assistant/AssistantChips.js +1 -1
  181. package/dist/configurator/ui/assistant/AssistantComposer.d.ts +2 -1
  182. package/dist/configurator/ui/assistant/AssistantComposer.js +1 -1
  183. package/dist/configurator/ui/assistant/AssistantMarkdown.d.ts +1 -1
  184. package/dist/configurator/ui/assistant/AssistantMarkdown.js +1 -1
  185. package/dist/configurator/ui/assistant/AssistantThread.d.ts +6 -2
  186. package/dist/configurator/ui/assistant/AssistantThread.js +1 -1
  187. package/dist/configurator/ui/assistant/entity-link/AssistantEntityLink.d.ts +13 -0
  188. package/dist/configurator/ui/assistant/entity-link/AssistantEntityLink.js +1 -0
  189. package/dist/configurator/ui/assistant/entity-link/entity-link-selection.d.ts +22 -0
  190. package/dist/configurator/ui/assistant/entity-link/entity-link-selection.js +1 -0
  191. package/dist/configurator/ui/assistant/entity-link/entity-link-state.d.ts +27 -0
  192. package/dist/configurator/ui/assistant/entity-link/entity-link-state.js +1 -0
  193. package/dist/configurator/ui/assistant/entity-link/entity-link-target.d.ts +5 -0
  194. package/dist/configurator/ui/assistant/entity-link/entity-link-target.js +1 -0
  195. package/dist/configurator/ui/assistant/entity-link/index.d.ts +3 -0
  196. package/dist/configurator/ui/assistant/entity-link/index.js +1 -0
  197. package/dist/configurator/ui/assistant/thread-items.d.ts +13 -2
  198. package/dist/configurator/ui/assistant/thread-items.js +1 -1
  199. package/dist/configurator/ui/assistant/tool-chip.d.ts +8 -1
  200. package/dist/configurator/ui/assistant/tool-chip.js +1 -1
  201. package/dist/configurator/ui/configurator-layout/sidebar-keys/index.d.ts +1 -0
  202. package/dist/configurator/ui/configurator-layout/sidebar-keys/index.js +1 -0
  203. package/dist/configurator/ui/configurator-layout/sidebar-keys/sidebar-keys.d.ts +11 -0
  204. package/dist/configurator/ui/configurator-layout/sidebar-keys/sidebar-keys.js +1 -0
  205. package/dist/configurator/ui/configurator-layout/slots/desktop-sidebar/DesktopSidebar.d.ts +101 -0
  206. package/dist/configurator/ui/configurator-layout/slots/desktop-sidebar/DesktopSidebar.js +16 -0
  207. package/dist/configurator/ui/configurator-layout/slots/desktop-sidebar/index.d.ts +1 -0
  208. package/dist/configurator/ui/configurator-layout/slots/desktop-sidebar/index.js +1 -0
  209. package/dist/configurator/ui/configurator-layout/slots/services/InvariantViolations.d.ts +4 -4
  210. package/dist/configurator/ui/configurator-layout/slots/services/InvariantViolations.js +1 -1
  211. package/dist/configurator/ui/configurator-layout/slots/services/SideEffects.d.ts +3 -6
  212. package/dist/configurator/ui/configurator-layout/slots/services/SideEffects.js +1 -1
  213. package/dist/configurator/ui/configurator-layout/slots/slots.d.ts +1 -0
  214. package/dist/configurator/ui/configurator-layout/slots/slots.js +1 -1
  215. package/dist/configurator/ui/configurator-layout/universal/DesktopLayout.d.ts +0 -74
  216. package/dist/configurator/ui/configurator-layout/universal/DesktopLayout.js +5 -20
  217. package/dist/configurator/ui/configurator-layout/universal/DesktopPreview.js +1 -1
  218. package/dist/configurator/ui/configurator-layout/universal/MobileLayout.js +4 -4
  219. package/dist/configurator/ui/configurator-layout/universal/MobilePreview.js +1 -1
  220. package/dist/configurator/ui/configurator-layout/universal/use-layout-scene-safe-area.d.ts +47 -0
  221. package/dist/configurator/ui/configurator-layout/universal/use-layout-scene-safe-area.js +1 -0
  222. package/dist/configurator/ui/configurator-layout/universal/use-scene-safe-area.d.ts +11 -26
  223. package/dist/configurator/ui/configurator-layout/universal/use-scene-safe-area.js +1 -1
  224. package/dist/configurator/ui/legacy/layout/steps/StepsNavigation.d.ts +2 -2
  225. package/dist/configurator/ui/phoenix-layout-elements/header/common/step-navigation/StepsNavigation.d.ts +2 -2
  226. package/dist/docs/complex-use-cases/filtered-controls-with-fix-dialog.mdx +100 -117
  227. package/dist/docs/complex-use-cases/navigation-reset-selection.mdx +18 -12
  228. package/dist/docs/complex-use-cases/sketching.mdx +0 -38
  229. package/dist/docs/controls/select-attribute/cardselect.mdx +9 -13
  230. package/dist/docs/dimensions/3d-scene-integration/dimension-indicators.mdx +2 -2
  231. package/dist/docs/dimensions/3d-scene-integration/editable-angle-indicator.mdx +1 -1
  232. package/dist/docs/dimensions/3d-scene-integration/editable-distance-dimension-indicator.mdx +1 -1
  233. package/dist/docs/dimensions/3d-scene-integration/list-selector-dimension-indicator.mdx +1 -1
  234. package/dist/docs/drag-and-drop/drag-handle.mdx +1 -1
  235. package/dist/docs/drag-and-drop/hotspot-handle.mdx +1 -1
  236. package/dist/docs/drag-and-drop/planes.mdx +1 -1
  237. package/dist/docs/drag-and-drop/rotatable.mdx +2 -2
  238. package/dist/docs/index.json +42 -1
  239. package/dist/docs/integrations/woocommerce/local-development.mdx +1 -1
  240. package/dist/docs/layouts/custom-layout.mdx +1400 -0
  241. package/dist/docs/layouts/custom-price.mdx +14 -16
  242. package/dist/docs/layouts/header/fixed.mdx +2 -2
  243. package/dist/docs/layouts/header/floating.mdx +2 -2
  244. package/dist/docs/layouts/sidebar/in-a-custom-layout.mdx +380 -0
  245. package/dist/docs/layouts/sidebar/tabs.mdx +24 -21
  246. package/dist/docs/layouts/sidebar-footer/basic.mdx +32 -77
  247. package/dist/docs/other-features/client-side-rendering/declarative.mdx +1 -1
  248. package/dist/docs/other-features/domain-actions.mdx +1 -1
  249. package/dist/docs/other-features/side-effects.mdx +50 -45
  250. package/dist/docs/other-features/transformers.mdx +5 -1
  251. package/dist/docs/other-features/violation-messages.mdx +52 -56
  252. package/dist/docs/phoenix/admin.mdx +9 -24
  253. package/dist/docs/phoenix/application-states.mdx +9 -7
  254. package/dist/docs/phoenix/configurator-interface.mdx +229 -80
  255. package/dist/docs/phoenix/deployments.mdx +1 -1
  256. package/dist/docs/phoenix/domain-model.mdx +4 -0
  257. package/dist/docs/phoenix/expression-context.mdx +11 -3
  258. package/dist/docs/phoenix/finalization.mdx +1 -1
  259. package/dist/docs/phoenix/getting-started.mdx +1 -1
  260. package/dist/docs/phoenix/layout-slots.mdx +114 -0
  261. package/dist/docs/phoenix/localization.mdx +3 -22
  262. package/dist/docs/phoenix/phoenix-cli.mdx +49 -49
  263. package/dist/docs/phoenix/project-structure.mdx +23 -10
  264. package/dist/docs/phoenix/quickstart.mdx +2 -2
  265. package/dist/docs/phoenix/sdk-builder-workflow.mdx +12 -11
  266. package/dist/docs/phoenix/testing.mdx +140 -0
  267. package/dist/docs/phoenix/webhook-membership.mdx +10 -9
  268. package/dist/docs/phoenix/webhooks.mdx +2 -2
  269. package/dist/docs/recipes-and-delete/recipe-hierarchy-selection.mdx +15 -13
  270. package/dist/docs/relations/hierarchy.mdx +13 -2
  271. package/dist/docs/ux-guidelines/choosing-a-control.mdx +11 -0
  272. package/dist/domain/admin-domain/__generated/enhanced-model.d.ts +1 -2
  273. package/dist/domain/admin-domain/__generated/model/versions/v1.d.ts +1 -1
  274. package/dist/domain/admin-domain/__generated/model/versions/v2.d.ts +1 -1
  275. package/dist/domain/admin-domain/__generated/model/versions/v3.d.ts +1 -1
  276. package/dist/domain/admin-domain/__generated/model/versions/v4.d.ts +1 -1
  277. package/dist/domain/admin-domain/__generated/model/versions/v5.d.ts +1 -1
  278. package/dist/domain/admin-domain/__generated/model/versions/v6.d.ts +2 -2
  279. package/dist/domain/admin-domain/__generated/model/versions/v6.js +1 -1
  280. package/dist/domain/admin-domain/implementation/common-admin-expressions.d.ts +26 -14
  281. package/dist/domain/admin-domain/implementation/common-admin-migrations.d.ts +1 -1
  282. package/dist/domain/admin-domain/implementation/common-admin-publish.d.ts +1 -2
  283. package/dist/domain/admin-domain/index.d.ts +9 -5
  284. package/dist/domain/admin-domain/index.js +1 -1
  285. package/dist/domain/application/GetApplicationWrapperHandler.d.ts +2 -2
  286. package/dist/domain/application/GetThemeHandler.d.ts +1 -1
  287. package/dist/domain/application/GetWebComponentOptions.d.ts +1 -1
  288. package/dist/domain/application/admin-page-factories.d.ts +1 -2
  289. package/dist/domain/application/application-config.d.ts +30 -97
  290. package/dist/domain/application/assistant/assistant-fields.d.ts +12 -0
  291. package/dist/domain/application/assistant/assistant-fields.js +1 -0
  292. package/dist/domain/application/assistant/assistant-manifest.d.ts +71 -0
  293. package/dist/domain/application/assistant/assistant-resolved-manifest.d.ts +131 -0
  294. package/dist/domain/application/assistant/assistant-resolved-manifest.js +1 -0
  295. package/dist/domain/application/assistant/assistant-value-type.d.ts +9 -0
  296. package/dist/domain/application/assistant/assistant-value-type.js +1 -0
  297. package/dist/domain/application/assistant/build-assistant-lenses.d.ts +14 -0
  298. package/dist/domain/application/assistant/build-assistant-lenses.js +5 -0
  299. package/dist/domain/application/assistant/build-assistant-manifest.d.ts +4 -0
  300. package/dist/domain/application/assistant/build-assistant-manifest.js +1 -0
  301. package/dist/domain/application/assistant/create-assistant-execution-schema.d.ts +32 -0
  302. package/dist/domain/application/assistant/create-assistant-execution-schema.js +1 -0
  303. package/dist/domain/application/assistant/generate-assistant-prompt.d.ts +3 -0
  304. package/dist/domain/application/assistant/generate-assistant-prompt.js +1 -0
  305. package/dist/domain/application/assistant/index.d.ts +9 -0
  306. package/dist/domain/application/assistant/index.js +1 -0
  307. package/dist/domain/application/assistant/session-setup/AssistantSetupHandler.d.ts +20 -0
  308. package/dist/domain/application/assistant/session-setup/AssistantSetupHandler.js +1 -0
  309. package/dist/domain/application/assistant/session-setup/apply-assistant-setup.d.ts +10 -0
  310. package/dist/domain/application/assistant/session-setup/apply-assistant-setup.js +1 -0
  311. package/dist/domain/application/assistant/session-setup/assistant-setup-manifest.d.ts +48 -0
  312. package/dist/domain/application/assistant/session-setup/assistant-setup-manifest.js +1 -0
  313. package/dist/domain/application/assistant/session-setup/create-session-assistant.d.ts +15 -0
  314. package/dist/domain/application/assistant/session-setup/create-session-assistant.js +1 -0
  315. package/dist/domain/application/assistant/session-setup/index.d.ts +4 -0
  316. package/dist/domain/application/assistant/session-setup/index.js +1 -0
  317. package/dist/domain/application/assistant-field-options.d.ts +2 -3
  318. package/dist/domain/application/assistant-mutations.d.ts +3 -5
  319. package/dist/domain/application/assistant-mutations.js +1 -1
  320. package/dist/domain/application/assistant-recipe-groups.d.ts +3 -7
  321. package/dist/domain/application/configurator-builder.d.ts +36 -18
  322. package/dist/domain/application/configurator-builder.js +1 -1
  323. package/dist/domain/application/create-initial-published-data.d.ts +6 -7
  324. package/dist/domain/application/index.d.ts +3 -6
  325. package/dist/domain/application/index.js +1 -1
  326. package/dist/domain/application/published-data/DataRowValidatorHandler.d.ts +1 -1
  327. package/dist/domain/application/published-data/FilterPublishedChunksHandler.d.ts +1 -1
  328. package/dist/domain/application/published-data/MapPublishedChunkedDataHandler.d.ts +1 -1
  329. package/dist/domain/application/published-data/MapPublishedRevisionDataHandler.d.ts +1 -1
  330. package/dist/domain/application/published-data/SheetValidatorHandler.d.ts +1 -1
  331. package/dist/domain/application/published-data/build-legend-data.d.ts +1 -1
  332. package/dist/domain/application/published-data/create-finalize-admin-domain.d.ts +1 -2
  333. package/dist/domain/application/published-data/format-field-type.d.ts +1 -1
  334. package/dist/domain/application/published-data/map-data-to-sheet.d.ts +1 -1
  335. package/dist/domain/application/published-data/map-published-chunked-data.d.ts +3 -3
  336. package/dist/domain/application/published-data/map-published-data.d.ts +7 -4
  337. package/dist/domain/application/published-data/validate-sheet-data.d.ts +1 -1
  338. package/dist/domain/available-system-components.js +1 -1
  339. package/dist/domain/core/action/action-factory.d.ts +11 -0
  340. package/dist/domain/core/{action.d.ts → action/action.d.ts} +22 -18
  341. package/dist/domain/core/action/index.d.ts +2 -0
  342. package/dist/domain/core/action/index.js +1 -0
  343. package/dist/domain/{components → core/component}/component-reader-types.d.ts +1 -2
  344. package/dist/domain/{components → core/component}/debug-state-component.d.ts +1 -1
  345. package/dist/domain/core/component/debug-state-component.js +1 -0
  346. package/dist/domain/core/component/domain-component-optic.d.ts +65 -0
  347. package/dist/domain/core/component/domain-component-optic.js +16 -0
  348. package/dist/domain/{components → core/component}/drag-state-component.d.ts +1 -1
  349. package/dist/domain/core/component/drag-state-component.js +1 -0
  350. package/dist/domain/{components → core/component}/export-state-component.d.ts +1 -1
  351. package/dist/domain/core/component/export-state-component.js +1 -0
  352. package/dist/domain/{components → core/component}/fullscreen-state-component.d.ts +1 -1
  353. package/dist/domain/core/component/fullscreen-state-component.js +1 -0
  354. package/dist/domain/{components → core/component}/group-components-by-entity-id-and-name.d.ts +1 -2
  355. package/dist/domain/core/component/group-components-by-entity-id-and-name.js +1 -0
  356. package/dist/domain/{components → core/component}/hover-state-component.d.ts +1 -1
  357. package/dist/domain/core/component/hover-state-component.js +1 -0
  358. package/dist/domain/core/component/index.d.ts +18 -0
  359. package/dist/domain/core/component/index.js +1 -0
  360. package/dist/domain/{components → core/component}/legacy-filter.d.ts +4 -19
  361. package/dist/domain/{components → core/component}/navigation-state-component.d.ts +1 -1
  362. package/dist/domain/core/component/navigation-state-component.js +1 -0
  363. package/dist/domain/{components → core/component}/selection-state-component.d.ts +1 -1
  364. package/dist/domain/core/component/selection-state-component.js +1 -0
  365. package/dist/domain/{components → core/component}/system-component-builder.d.ts +1 -2
  366. package/dist/domain/core/component/system-component-builder.js +1 -0
  367. package/dist/domain/{components → core/component}/system-component-filter.d.ts +38 -20
  368. package/dist/domain/core/component/system-virtual-entity.js +1 -0
  369. package/dist/domain/{components → core/component}/tool-state-component.d.ts +1 -1
  370. package/dist/domain/core/component/tool-state-component.js +1 -0
  371. package/dist/domain/{components → core/component}/updates.d.ts +1 -2
  372. package/dist/domain/{components → core/component}/view-state-component.d.ts +1 -1
  373. package/dist/domain/core/component/view-state-component.js +1 -0
  374. package/dist/domain/{components → core/component}/viewport-state-component.d.ts +1 -1
  375. package/dist/domain/core/component/viewport-state-component.js +1 -0
  376. package/dist/domain/core/data-schema/data-cell-value.d.ts +4 -0
  377. package/dist/domain/core/data-schema/data-schema-array-field.d.ts +5 -0
  378. package/dist/domain/core/data-schema/data-schema-field-object.d.ts +4 -0
  379. package/dist/domain/core/data-schema/data-schema-field.d.ts +2 -0
  380. package/dist/domain/core/data-schema/data-schema-field.js +1 -0
  381. package/dist/domain/core/data-schema/data-schema-localized-field.d.ts +4 -0
  382. package/dist/domain/core/data-schema/data-schema-localized-field.js +1 -0
  383. package/dist/domain/core/data-schema/data-schema-primitive-field.d.ts +5 -0
  384. package/dist/domain/core/data-schema/data-schema-primitive-field.js +1 -0
  385. package/dist/domain/core/data-schema/data-schema.d.ts +2 -0
  386. package/dist/domain/core/data-schema/data-schema.js +1 -0
  387. package/dist/domain/core/data-schema/index.d.ts +7 -0
  388. package/dist/domain/core/data-schema/index.js +1 -0
  389. package/dist/domain/core/decoder/create-decoder.d.ts +6 -0
  390. package/dist/domain/core/decoder/create-decoder.js +1 -0
  391. package/dist/domain/core/decoder/decoder.d.ts +6 -0
  392. package/dist/domain/core/decoder/decoder.js +1 -0
  393. package/dist/domain/core/decoder/index.d.ts +2 -0
  394. package/dist/domain/core/decoder/index.js +1 -0
  395. package/dist/domain/core/domain-factory.d.ts +4 -5
  396. package/dist/domain/core/domain-factory.js +1 -1
  397. package/dist/domain/core/domain.d.ts +4 -5
  398. package/dist/domain/core/domain.js +1 -1
  399. package/dist/domain/core/emission/index.d.ts +8 -0
  400. package/dist/domain/core/emission/index.js +1 -0
  401. package/dist/domain/core/emission/reset-state-emission.d.ts +12 -0
  402. package/dist/domain/core/emission/reset-state-emission.js +1 -0
  403. package/dist/domain/core/emission/state-emission.d.ts +4 -0
  404. package/dist/domain/core/emission/state-emission.js +1 -0
  405. package/dist/domain/core/emission/state-update-emission.d.ts +14 -0
  406. package/dist/domain/core/emission/state-update-emission.js +1 -0
  407. package/dist/domain/core/emission/state-validation-result.d.ts +18 -0
  408. package/dist/domain/core/emission/state-validation-result.js +1 -0
  409. package/dist/domain/core/emission/transformation-log.d.ts +2 -0
  410. package/dist/domain/core/emission/transformation-log.js +1 -0
  411. package/dist/domain/core/emission/transformer-log-entry.d.ts +6 -0
  412. package/dist/domain/core/emission/transformer-log-entry.js +1 -0
  413. package/dist/domain/core/emission/transformer-log.d.ts +11 -0
  414. package/dist/domain/core/emission/transformer-log.js +1 -0
  415. package/dist/domain/core/emission/transformer-phase.d.ts +1 -0
  416. package/dist/domain/core/emission/transformer-phase.js +1 -0
  417. package/dist/domain/core/expression/aliased-expressions.d.ts +10 -0
  418. package/dist/domain/core/expression/aliased-expressions.js +1 -0
  419. package/dist/domain/core/expression/constant-expressions.d.ts +16 -0
  420. package/dist/domain/core/expression/constant-expressions.js +1 -0
  421. package/dist/domain/core/expression/custom-expression.d.ts +25 -0
  422. package/dist/domain/core/expression/custom-expression.js +1 -0
  423. package/dist/domain/core/expression/expression.d.ts +46 -0
  424. package/dist/domain/core/expression/expression.js +1 -0
  425. package/dist/domain/core/expression/index.d.ts +4 -0
  426. package/dist/domain/core/expression/index.js +1 -0
  427. package/dist/domain/core/index.d.ts +13 -17
  428. package/dist/domain/core/index.js +1 -1
  429. package/dist/domain/{invariants → core/invariant}/builtin-invariant.d.ts +2 -2
  430. package/dist/domain/core/invariant/custom-invariants.d.ts +13 -0
  431. package/dist/domain/core/invariant/custom-invariants.js +1 -0
  432. package/dist/domain/core/invariant/index.d.ts +5 -0
  433. package/dist/domain/core/invariant/index.js +1 -0
  434. package/dist/domain/core/invariant/invariants.d.ts +10 -0
  435. package/dist/domain/core/invariant/invariants.js +1 -0
  436. package/dist/domain/core/invariant/violation-component.js +1 -0
  437. package/dist/domain/{invariants → core/invariant}/violation.d.ts +52 -4
  438. package/dist/domain/core/invariant/violation.js +1 -0
  439. package/dist/domain/core/{component.d.ts → model/component.d.ts} +1 -1
  440. package/dist/domain/core/model/index.d.ts +6 -0
  441. package/dist/domain/core/model/index.js +1 -0
  442. package/dist/domain/core/{model.d.ts → model/model.d.ts} +1 -1
  443. package/dist/domain/core/{reflection.d.ts → model/reflection.d.ts} +1 -1
  444. package/dist/domain/core/model/reflection.js +1 -0
  445. package/dist/domain/core/recipe/index.d.ts +1 -0
  446. package/dist/domain/core/recipe/index.js +1 -0
  447. package/dist/domain/core/recipe/recipes.d.ts +23 -0
  448. package/dist/domain/core/recipe/recipes.js +1 -0
  449. package/dist/domain/core/relation/all-of-type-relation.d.ts +19 -0
  450. package/dist/domain/core/relation/all-of-type-relation.js +1 -0
  451. package/dist/domain/{relations → core/relation}/component-factories.d.ts +1 -2
  452. package/dist/domain/core/relation/component-factories.js +1 -0
  453. package/dist/domain/{relations → core/relation}/composed-of.d.ts +1 -1
  454. package/dist/domain/core/relation/composed-of.js +1 -0
  455. package/dist/domain/core/relation/direct-relation.d.ts +17 -0
  456. package/dist/domain/core/relation/index.d.ts +8 -0
  457. package/dist/domain/core/relation/index.js +1 -0
  458. package/dist/domain/core/relation/indirect-relation.d.ts +25 -0
  459. package/dist/domain/core/relation/indirect-relation.js +1 -0
  460. package/dist/domain/{relations → core/relation}/reference-component.d.ts +4 -5
  461. package/dist/domain/core/relation/reference-component.js +1 -0
  462. package/dist/domain/{relations → core/relation}/reference-field.d.ts +1 -1
  463. package/dist/domain/core/relation/reference-field.js +1 -0
  464. package/dist/domain/core/relation/relation-factory.d.ts +22 -0
  465. package/dist/domain/core/relation/relation-factory.js +1 -0
  466. package/dist/domain/core/schema/enhanced-json-schema.js +1 -0
  467. package/dist/domain/core/schema/extended-schema-validator.js +1 -0
  468. package/dist/domain/core/schema/index.d.ts +3 -0
  469. package/dist/domain/core/schema/index.js +1 -0
  470. package/dist/domain/core/schema/schema-validator.js +1 -0
  471. package/dist/domain/core/state/id-sequence.d.ts +15 -0
  472. package/dist/domain/core/state/id-sequence.js +1 -0
  473. package/dist/domain/core/state/index.d.ts +3 -0
  474. package/dist/domain/core/state/index.js +1 -0
  475. package/dist/domain/core/{migrations.d.ts → state/migrations.d.ts} +15 -47
  476. package/dist/domain/core/state/migrations.js +1 -0
  477. package/dist/domain/core/{state.d.ts → state/state.d.ts} +2 -3
  478. package/dist/domain/domain-builder.d.ts +11 -11
  479. package/dist/domain/domain-builder.js +1 -1
  480. package/dist/domain/domain-context/action-system/action-system.d.ts +2 -4
  481. package/dist/domain/domain-context/action-system/action-system.js +1 -1
  482. package/dist/domain/domain-context/action-system/index.d.ts +1 -0
  483. package/dist/domain/domain-context/action-system/index.js +1 -0
  484. package/dist/domain/domain-context/analytics-system/index.d.ts +2 -0
  485. package/dist/domain/domain-context/analytics-system/index.js +1 -0
  486. package/dist/domain/domain-context/create-transformer.d.ts +2 -2
  487. package/dist/domain/domain-context/dimension-system/dimension-state.js +1 -1
  488. package/dist/domain/domain-context/dimension-system/dimension-system.d.ts +3 -4
  489. package/dist/domain/domain-context/dimension-system/dimension-system.js +1 -1
  490. package/dist/domain/domain-context/dimension-system/index.d.ts +1 -0
  491. package/dist/domain/domain-context/dimension-system/index.js +1 -0
  492. package/dist/domain/domain-context/domain-context-systems.d.ts +8 -10
  493. package/dist/domain/domain-context/index.d.ts +8 -18
  494. package/dist/domain/domain-context/index.js +1 -1
  495. package/dist/domain/domain-context/navigation-system/index.d.ts +3 -0
  496. package/dist/domain/domain-context/navigation-system/index.js +1 -0
  497. package/dist/domain/domain-context/navigation-system/navigation-system.d.ts +5 -8
  498. package/dist/domain/domain-context/navigation-system/navigation-system.js +1 -1
  499. package/dist/domain/domain-context/navigation-system/navigation-updates.d.ts +1 -12
  500. package/dist/domain/domain-context/navigation-system/navigation-updates.js +1 -1
  501. package/dist/domain/domain-context/navigation-system/selection-transformers.d.ts +2 -2
  502. package/dist/domain/domain-context/navigation-system/selection-transformers.js +1 -1
  503. package/dist/domain/domain-context/recipe-system/index.d.ts +1 -0
  504. package/dist/domain/domain-context/recipe-system/index.js +1 -0
  505. package/dist/domain/domain-context/recipe-system/recipe-cooker-system.d.ts +2 -4
  506. package/dist/domain/domain-context/recipe-system/recipe-cooker-system.js +1 -1
  507. package/dist/domain/domain-context/relation-transformers/cascade-deletes.d.ts +3 -3
  508. package/dist/domain/domain-context/relation-transformers/cascade-deletes.js +1 -1
  509. package/dist/domain/domain-context/relation-transformers/cascade-ref-pruning.d.ts +3 -3
  510. package/dist/domain/domain-context/relation-transformers/cascade-ref-pruning.js +1 -1
  511. package/dist/domain/domain-context/relation-transformers/create-entity-refs.d.ts +3 -3
  512. package/dist/domain/domain-context/relation-transformers/create-entity-refs.js +2 -2
  513. package/dist/domain/domain-context/relation-transformers/index.d.ts +4 -0
  514. package/dist/domain/domain-context/relation-transformers/index.js +1 -0
  515. package/dist/domain/domain-context/relation-transformers/replace-refs.d.ts +3 -3
  516. package/dist/domain/domain-context/relation-transformers/replace-refs.js +1 -1
  517. package/dist/domain/domain-context/store-system/apply-updates.d.ts +1 -3
  518. package/dist/domain/domain-context/store-system/apply-updates.js +1 -1
  519. package/dist/domain/domain-context/store-system/index.d.ts +4 -0
  520. package/dist/domain/domain-context/store-system/index.js +1 -0
  521. package/dist/domain/domain-context/store-system/next-domain-entity-id.d.ts +1 -13
  522. package/dist/domain/domain-context/store-system/next-domain-entity-id.js +1 -1
  523. package/dist/domain/domain-context/store-system/reconcile-projected-entities.d.ts +1 -2
  524. package/dist/domain/domain-context/store-system/reconcile-projected-entities.js +1 -1
  525. package/dist/domain/domain-context/store-system/store-system.d.ts +2 -39
  526. package/dist/domain/domain-context/store-system/store-system.js +2 -2
  527. package/dist/domain/domain-context/store-system/system-state.d.ts +2 -4
  528. package/dist/domain/domain-context/store-system/system-state.js +1 -1
  529. package/dist/domain/domain-context/transformers/actions-builder.d.ts +1 -2
  530. package/dist/domain/domain-context/transformers/actions-builder.js +1 -1
  531. package/dist/domain/domain-context/transformers/auto-snap-transformer.d.ts +6 -10
  532. package/dist/domain/domain-context/transformers/auto-snap-transformer.js +1 -1
  533. package/dist/domain/domain-context/transformers/chain-builder.d.ts +3 -3
  534. package/dist/domain/domain-context/transformers/context.d.ts +2 -7
  535. package/dist/domain/domain-context/transformers/context.js +1 -1
  536. package/dist/domain/domain-context/transformers/entity-builder.d.ts +1 -5
  537. package/dist/domain/domain-context/transformers/entity-builder.js +1 -1
  538. package/dist/domain/domain-context/transformers/index.d.ts +1 -1
  539. package/dist/domain/domain-context/transformers/index.js +1 -1
  540. package/dist/domain/domain-context/transformers/then-builder.d.ts +1 -2
  541. package/dist/domain/domain-context/transformers/then-builder.js +1 -1
  542. package/dist/domain/domain-context/transformers/when-builder.d.ts +3 -9
  543. package/dist/domain/domain-context/transformers/when-builder.js +1 -1
  544. package/dist/domain/domain-context/undo-system.d.ts +2 -3
  545. package/dist/domain/domain-runtime/access/selectors.d.ts +9 -0
  546. package/dist/domain/domain-runtime/access/selectors.js +1 -1
  547. package/dist/domain/domain-runtime/access/types.d.ts +2 -0
  548. package/dist/domain/domain-runtime/access/types.js +1 -1
  549. package/dist/domain/domain-runtime/domain-context/action-context.d.ts +11 -0
  550. package/dist/domain/domain-runtime/domain-context/action-context.js +1 -0
  551. package/dist/domain/domain-runtime/domain-context/component-reader.d.ts +1 -4
  552. package/dist/domain/domain-runtime/domain-context/component-reader.js +1 -1
  553. package/dist/domain/domain-runtime/domain-context/domain-context.js +1 -1
  554. package/dist/domain/domain-runtime/domain-context/expression-context.d.ts +8 -0
  555. package/dist/domain/domain-runtime/domain-context/expression-context.js +1 -0
  556. package/dist/domain/domain-runtime/domain-context/index.d.ts +3 -0
  557. package/dist/domain/domain-runtime/domain-context/runtime-expression-context.d.ts +18 -0
  558. package/dist/domain/domain-runtime/domain-context/runtime-expression-context.js +1 -0
  559. package/dist/domain/domain-runtime/domain-context/selectors.d.ts +19 -25
  560. package/dist/domain/domain-runtime/domain-context/selectors.js +1 -1
  561. package/dist/domain/domain-runtime/domain-context/types.d.ts +4 -1
  562. package/dist/domain/domain-runtime/domain-runtime.d.ts +88 -72
  563. package/dist/domain/domain-runtime/errors/implementation-error-collector.d.ts +19 -0
  564. package/dist/domain/domain-runtime/errors/implementation-error-collector.js +1 -0
  565. package/dist/domain/domain-runtime/errors/implementation-error.d.ts +46 -0
  566. package/dist/domain/domain-runtime/errors/implementation-error.js +1 -0
  567. package/dist/domain/domain-runtime/errors/implementation-errors.d.ts +13 -0
  568. package/dist/domain/domain-runtime/errors/implementation-errors.js +1 -0
  569. package/dist/domain/domain-runtime/errors/index.d.ts +4 -0
  570. package/dist/domain/domain-runtime/errors/index.js +1 -0
  571. package/dist/domain/domain-runtime/errors/to-implementation-errors.d.ts +10 -0
  572. package/dist/domain/domain-runtime/errors/to-implementation-errors.js +1 -0
  573. package/dist/domain/domain-runtime/index.d.ts +1 -0
  574. package/dist/domain/domain-runtime/index.js +1 -1
  575. package/dist/domain/domain-runtime/spec/create-violation-expressions.d.ts +24 -0
  576. package/dist/domain/domain-runtime/spec/create-violation-expressions.js +1 -0
  577. package/dist/domain/domain-runtime/spec/index.d.ts +5 -0
  578. package/dist/domain/domain-runtime/spec/index.js +1 -1
  579. package/dist/domain/domain-runtime/spec/initialize.d.ts +11 -0
  580. package/dist/domain/domain-runtime/spec/initialize.js +1 -1
  581. package/dist/domain/{expressions → domain-runtime/spec}/memoize-expression.d.ts +1 -2
  582. package/dist/domain/{application → domain-runtime/spec/module-checks}/element-registration.d.ts +6 -1
  583. package/dist/domain/domain-runtime/spec/module-checks/element-registration.js +1 -0
  584. package/dist/domain/{application → domain-runtime/spec/module-checks}/handler-registration.d.ts +5 -0
  585. package/dist/domain/domain-runtime/spec/module-checks/handler-registration.js +1 -0
  586. package/dist/domain/domain-runtime/spec/module-checks/index.d.ts +8 -0
  587. package/dist/domain/domain-runtime/spec/module-checks/index.js +1 -0
  588. package/dist/domain/domain-runtime/spec/module-checks/project-modules.d.ts +32 -0
  589. package/dist/domain/domain-runtime/spec/module-checks/project-modules.js +1 -0
  590. package/dist/domain/domain-runtime/spec/module-checks/resolve-action-modules.d.ts +4 -0
  591. package/dist/domain/domain-runtime/spec/module-checks/resolve-action-modules.js +1 -0
  592. package/dist/domain/domain-runtime/spec/module-checks/resolve-component-optic-modules.d.ts +4 -0
  593. package/dist/domain/domain-runtime/spec/module-checks/resolve-component-optic-modules.js +1 -0
  594. package/dist/domain/domain-runtime/spec/module-checks/resolve-expression-modules.d.ts +15 -0
  595. package/dist/domain/domain-runtime/spec/module-checks/resolve-expression-modules.js +1 -0
  596. package/dist/domain/domain-runtime/spec/module-checks/resolve-imported-transformers.d.ts +22 -0
  597. package/dist/domain/domain-runtime/spec/module-checks/resolve-imported-transformers.js +1 -0
  598. package/dist/domain/domain-runtime/spec/module-checks/resolve-invariant-modules.d.ts +6 -0
  599. package/dist/domain/domain-runtime/spec/module-checks/resolve-invariant-modules.js +1 -0
  600. package/dist/domain/{actions → domain-runtime/spec}/prepare-action-implementations.d.ts +1 -1
  601. package/dist/domain/domain-runtime/spec/prepare-action-implementations.js +5 -0
  602. package/dist/domain/{expressions → domain-runtime/spec}/prepare-domain-expressions.d.ts +1 -1
  603. package/dist/domain/domain-runtime/spec/selectors.d.ts +7 -8
  604. package/dist/domain/domain-runtime/spec/selectors.js +1 -1
  605. package/dist/domain/domain-runtime/spec/types.d.ts +8 -6
  606. package/dist/domain/{system-components → extensions}/angle-indicator.d.ts +1 -1
  607. package/dist/domain/extensions/angle-indicator.js +1 -0
  608. package/dist/domain/{system-components → extensions}/attribute-switch.d.ts +1 -1
  609. package/dist/domain/extensions/attribute-switch.js +1 -0
  610. package/dist/domain/{system-components → extensions}/autorotate-camera-component.d.ts +1 -1
  611. package/dist/domain/extensions/autorotate-camera-component.js +1 -0
  612. package/dist/domain/{system-components → extensions}/basic-sidebar-footer.d.ts +1 -1
  613. package/dist/domain/extensions/basic-sidebar-footer.js +1 -0
  614. package/dist/domain/extensions/camera-based-hidden-entity-object.js +1 -0
  615. package/dist/domain/extensions/camera-based-hidden-entity.js +1 -0
  616. package/dist/domain/{system-components → extensions}/canvas-config.d.ts +2 -2
  617. package/dist/domain/extensions/canvas-config.js +1 -0
  618. package/dist/domain/extensions/canvas-custom-environment.js +1 -0
  619. package/dist/domain/{system-components → extensions}/canvas-padding.d.ts +1 -1
  620. package/dist/domain/extensions/canvas-padding.js +1 -0
  621. package/dist/domain/{system-components → extensions}/canvas-preset-environment.d.ts +1 -1
  622. package/dist/domain/extensions/canvas-preset-environment.js +1 -0
  623. package/dist/domain/{system-components → extensions}/child-entity-recipe-hierarchy.d.ts +2 -2
  624. package/dist/domain/extensions/child-entity-recipe-hierarchy.js +1 -0
  625. package/dist/domain/{system-components → extensions}/client-side-image.d.ts +2 -2
  626. package/dist/domain/extensions/client-side-image.js +1 -0
  627. package/dist/domain/extensions/color-value.js +1 -0
  628. package/dist/domain/{system-components → extensions}/common/angle-indicator-schema.d.ts +3 -3
  629. package/dist/domain/extensions/common/angle-indicator-schema.js +1 -0
  630. package/dist/domain/{system-components → extensions}/common/dimension-indicator-schema.d.ts +3 -3
  631. package/dist/domain/extensions/common/dimension-indicator-schema.js +1 -0
  632. package/dist/domain/extensions/common/index.d.ts +4 -0
  633. package/dist/domain/extensions/common/index.js +1 -0
  634. package/dist/domain/{system-components → extensions}/custom-header.d.ts +2 -2
  635. package/dist/domain/{system-components → extensions}/custom-header.js +1 -1
  636. package/dist/domain/extensions/custom-price-footer.js +1 -0
  637. package/dist/domain/{system-components → extensions}/custom-sidebar-footer.d.ts +2 -2
  638. package/dist/domain/{system-components → extensions}/custom-sidebar-footer.js +1 -1
  639. package/dist/domain/{system-components → extensions}/dimension-indicator.d.ts +1 -1
  640. package/dist/domain/extensions/dimension-indicator.js +1 -0
  641. package/dist/domain/{system-components → extensions}/editable-angle-indicator.d.ts +4 -3
  642. package/dist/domain/extensions/editable-angle-indicator.js +1 -0
  643. package/dist/domain/{system-components → extensions}/editable-distance-dimension-indicator.d.ts +4 -3
  644. package/dist/domain/extensions/editable-distance-dimension-indicator.js +1 -0
  645. package/dist/domain/{system-components → extensions}/editable-offset-indicator.d.ts +4 -3
  646. package/dist/domain/extensions/editable-offset-indicator.js +1 -0
  647. package/dist/domain/{system-components → extensions}/editable-size-indicator.d.ts +3 -2
  648. package/dist/domain/extensions/editable-size-indicator.js +1 -0
  649. package/dist/domain/{system-components → extensions}/entity-header.d.ts +1 -1
  650. package/dist/domain/extensions/entity-header.js +1 -0
  651. package/dist/domain/{system-components → extensions}/exit-tool-mode-fab.d.ts +1 -1
  652. package/dist/domain/extensions/exit-tool-mode-fab.js +1 -0
  653. package/dist/domain/{system-components → extensions}/finalize-action.d.ts +1 -1
  654. package/dist/domain/extensions/finalize-action.js +1 -0
  655. package/dist/domain/extensions/finalize-component.js +1 -0
  656. package/dist/domain/extensions/fit-selection-orthographic-camera-component.js +1 -0
  657. package/dist/domain/extensions/fit-selection-perspective-camera-component.js +1 -0
  658. package/dist/domain/{system-components → extensions}/fixed-header.d.ts +1 -1
  659. package/dist/domain/extensions/fixed-header.js +1 -0
  660. package/dist/domain/{system-components → extensions}/floating-header.d.ts +1 -1
  661. package/dist/domain/extensions/floating-header.js +1 -0
  662. package/dist/domain/{system-components → extensions}/hidden-header.d.ts +1 -1
  663. package/dist/domain/extensions/hidden-header.js +1 -0
  664. package/dist/domain/{system-components → extensions}/hidden-sidebar-footer.d.ts +1 -1
  665. package/dist/domain/extensions/hidden-sidebar-footer.js +1 -0
  666. package/dist/domain/{system-components → extensions}/horizontal-tabs.d.ts +3 -3
  667. package/dist/domain/extensions/horizontal-tabs.js +1 -0
  668. package/dist/domain/extensions/index.d.ts +69 -0
  669. package/dist/domain/extensions/index.js +1 -0
  670. package/dist/domain/{system-components → extensions}/list-selector-dimension-indicator.d.ts +4 -3
  671. package/dist/domain/extensions/list-selector-dimension-indicator.js +1 -0
  672. package/dist/domain/extensions/multilingual-text-value.js +1 -0
  673. package/dist/domain/{system-components → extensions}/navigation-steps.d.ts +2 -2
  674. package/dist/domain/extensions/navigation-steps.js +1 -0
  675. package/dist/domain/{system-components → extensions}/offset-anchors.d.ts +1 -1
  676. package/dist/domain/extensions/offset-anchors.js +1 -0
  677. package/dist/domain/{system-components → extensions}/offset-indicator.d.ts +1 -2
  678. package/dist/domain/extensions/offset-indicator.js +1 -0
  679. package/dist/domain/{system-components → extensions}/offset.d.ts +1 -1
  680. package/dist/domain/extensions/offset.js +1 -0
  681. package/dist/domain/{system-components → extensions}/other-action.d.ts +1 -1
  682. package/dist/domain/extensions/other-action.js +1 -0
  683. package/dist/domain/{system-components → extensions}/property-page.d.ts +2 -2
  684. package/dist/domain/extensions/property-page.js +1 -0
  685. package/dist/domain/{system-components → extensions}/read-sidebar-footer.d.ts +1 -1
  686. package/dist/domain/extensions/read-sidebar-footer.js +1 -0
  687. package/dist/domain/{system-components → extensions}/replace-entity-recipe-hierarchy.d.ts +2 -2
  688. package/dist/domain/extensions/replace-entity-recipe-hierarchy.js +1 -0
  689. package/dist/domain/extensions/rotatable.js +1 -0
  690. package/dist/domain/{system-components → extensions}/rotation-handle.d.ts +2 -2
  691. package/dist/domain/extensions/rotation-handle.js +1 -0
  692. package/dist/domain/{system-components → extensions}/save-template-thumbnail.d.ts +2 -2
  693. package/dist/domain/extensions/save-template-thumbnail.js +1 -0
  694. package/dist/domain/{system-components → extensions}/scene-entity-add-fab.d.ts +1 -1
  695. package/dist/domain/extensions/scene-entity-add-fab.js +1 -0
  696. package/dist/domain/extensions/scene-entity-animation.js +1 -0
  697. package/dist/domain/extensions/scene-entity-control.js +1 -0
  698. package/dist/domain/{system-components → extensions}/scene-entity-delete-fab.d.ts +1 -1
  699. package/dist/domain/extensions/scene-entity-delete-fab.js +1 -0
  700. package/dist/domain/extensions/scene-entity-floor-object.js +1 -0
  701. package/dist/domain/{system-components → extensions}/scene-entity-html-hotspot.d.ts +1 -1
  702. package/dist/domain/extensions/scene-entity-html-hotspot.js +1 -0
  703. package/dist/domain/{system-components → extensions}/scene-entity-navigation-hotspot.d.ts +1 -1
  704. package/dist/domain/extensions/scene-entity-navigation-hotspot.js +1 -0
  705. package/dist/domain/{system-components → extensions}/scene-entity-object-html-hotspot.d.ts +1 -1
  706. package/dist/domain/extensions/scene-entity-object-html-hotspot.js +1 -0
  707. package/dist/domain/{system-components → extensions}/scene-entity-select-hotspot.d.ts +1 -1
  708. package/dist/domain/extensions/scene-entity-select-hotspot.js +1 -0
  709. package/dist/domain/extensions/scene-entity-wall-object.js +1 -0
  710. package/dist/domain/extensions/selectable-component.js +1 -0
  711. package/dist/domain/{system-components → extensions}/sidebar-tabs.d.ts +1 -1
  712. package/dist/domain/extensions/sidebar-tabs.js +1 -0
  713. package/dist/domain/extensions/simple-summary.js +1 -0
  714. package/dist/domain/{system-components → extensions}/size.d.ts +1 -1
  715. package/dist/domain/extensions/size.js +1 -0
  716. package/dist/domain/{system-components → extensions}/sketching-draw.d.ts +1 -1
  717. package/dist/domain/extensions/sketching-draw.js +1 -0
  718. package/dist/domain/{system-components → extensions}/sketching-edit.d.ts +2 -2
  719. package/dist/domain/extensions/sketching-edit.js +1 -0
  720. package/dist/domain/extensions/summary-component.js +1 -0
  721. package/dist/domain/extensions/text-value.js +1 -0
  722. package/dist/domain/extensions/tool-controls.js +1 -0
  723. package/dist/domain/{system-components → extensions}/tool-menu-fab.d.ts +2 -2
  724. package/dist/domain/extensions/tool-menu-fab.js +1 -0
  725. package/dist/domain/{system-components → extensions}/toolbar.d.ts +2 -2
  726. package/dist/domain/{system-components → extensions}/toolbar.js +1 -1
  727. package/dist/domain/{system-components → extensions}/universal-sidebar-footer.d.ts +1 -1
  728. package/dist/domain/extensions/universal-sidebar-footer.js +1 -0
  729. package/dist/domain/extensions/view-controls.js +1 -0
  730. package/dist/domain/index.d.ts +2 -32
  731. package/dist/domain/index.js +1 -1
  732. package/dist/domain/mocks/create-mock-domain-context.d.ts +1 -1
  733. package/dist/domain/mocks/create-mock-domain-runtime-services.d.ts +1 -1
  734. package/dist/domain/mocks/create-mock-domain-runtime.d.ts +30 -21
  735. package/dist/domain/mocks/create-mock-domain-runtime.js +1 -1
  736. package/dist/domain/mocks/create-mock-domain.d.ts +1 -1
  737. package/dist/domain/mocks/create-mock-domain.js +1 -1
  738. package/dist/domain/mocks/create-mock-state.d.ts +2 -2
  739. package/dist/domain/mocks/create-test-application-config.d.ts +59 -0
  740. package/dist/domain/mocks/create-test-application-config.js +1 -0
  741. package/dist/domain/mocks/index.d.ts +1 -0
  742. package/dist/domain/mocks/index.js +1 -1
  743. package/dist/domain/projections/blender-projections/blender-projections.d.ts +2 -3
  744. package/dist/domain/projections/blender-projections/blender-projections.js +1 -1
  745. package/dist/domain/projections/blender-projections/camera.d.ts +2 -2
  746. package/dist/domain/projections/collision-projections.d.ts +1 -1
  747. package/dist/domain/projections/composition-projections.d.ts +1 -1
  748. package/dist/domain/projections/composition-projections.js +1 -1
  749. package/dist/domain/projections/constraint-projections.d.ts +1 -1
  750. package/dist/domain/projections/index.d.ts +1 -1
  751. package/dist/domain/projections/position-projections.d.ts +1 -1
  752. package/dist/domain/projections/projected-entities-projections.d.ts +2 -3
  753. package/dist/domain/projections/snap-matching.d.ts +1 -2
  754. package/dist/domain/projections/snap-utils.d.ts +1 -2
  755. package/dist/domain/projections/snapping-projections.d.ts +1 -1
  756. package/dist/domain/projections/validation-projections.d.ts +3 -20
  757. package/dist/domain/projections/validation-projections.js +1 -1
  758. package/dist/domain/sketching/sketching-projections.d.ts +1 -1
  759. package/dist/domain/system-components/admin-sidebar.d.ts +1 -1
  760. package/dist/domain/system-components/admin-sidebar.js +1 -1
  761. package/dist/domain/system-components/angle-dimension.js +1 -1
  762. package/dist/domain/system-components/application-config.d.ts +3 -3
  763. package/dist/domain/system-components/application-config.js +1 -1
  764. package/dist/domain/system-components/attribute-selection.js +1 -1
  765. package/dist/domain/system-components/bounding-box-component.d.ts +1 -1
  766. package/dist/domain/system-components/bounding-box-component.js +1 -1
  767. package/dist/domain/system-components/bounding-sphere-component.d.ts +1 -1
  768. package/dist/domain/system-components/bounding-sphere-component.js +1 -1
  769. package/dist/domain/system-components/child-entity-recipes.d.ts +1 -1
  770. package/dist/domain/system-components/child-entity-recipes.js +1 -1
  771. package/dist/domain/system-components/child-entity-selection.d.ts +1 -2
  772. package/dist/domain/system-components/child-entity-selection.js +1 -1
  773. package/dist/domain/system-components/collision-box-geometry.d.ts +5 -3
  774. package/dist/domain/system-components/collision-box-geometry.js +1 -1
  775. package/dist/domain/system-components/collision-geometries.d.ts +1 -1
  776. package/dist/domain/system-components/collision-geometry.d.ts +5 -3
  777. package/dist/domain/system-components/collision-geometry.js +1 -1
  778. package/dist/domain/system-components/collision-point-geometry.d.ts +5 -3
  779. package/dist/domain/system-components/collision-point-geometry.js +1 -1
  780. package/dist/domain/system-components/common/index.d.ts +0 -4
  781. package/dist/domain/system-components/common/index.js +1 -1
  782. package/dist/domain/system-components/common/material-override-schema.d.ts +2 -2
  783. package/dist/domain/system-components/common/recipes.d.ts +21 -4
  784. package/dist/domain/system-components/common/recipes.js +1 -1
  785. package/dist/domain/system-components/constraint.d.ts +11 -24
  786. package/dist/domain/system-components/constraint.js +1 -1
  787. package/dist/domain/system-components/create-blueprint.d.ts +1 -1
  788. package/dist/domain/system-components/custom-scene-entity.d.ts +1 -1
  789. package/dist/domain/system-components/custom-scene-entity.js +1 -1
  790. package/dist/domain/system-components/detail.js +1 -1
  791. package/dist/domain/system-components/distance-dimension-select.d.ts +1 -1
  792. package/dist/domain/system-components/distance-dimension-select.js +1 -1
  793. package/dist/domain/system-components/distance-dimension.d.ts +1 -1
  794. package/dist/domain/system-components/distance-dimension.js +1 -1
  795. package/dist/domain/system-components/drag-handle.d.ts +2 -2
  796. package/dist/domain/system-components/drag-handle.js +1 -1
  797. package/dist/domain/system-components/fit-entity-orthographic-camera-component.js +1 -1
  798. package/dist/domain/system-components/fit-entity-perspective-camera-component.js +1 -1
  799. package/dist/domain/system-components/fit-root-orthographic-camera-component.js +1 -1
  800. package/dist/domain/system-components/fit-root-perspective-camera-component.js +1 -1
  801. package/dist/domain/system-components/generic-dimension.d.ts +1 -1
  802. package/dist/domain/system-components/generic-dimension.js +1 -1
  803. package/dist/domain/system-components/hidden-entity.js +1 -1
  804. package/dist/domain/system-components/hotspot-drag-handle.d.ts +2 -3
  805. package/dist/domain/system-components/hotspot-drag-handle.js +1 -1
  806. package/dist/domain/system-components/index.d.ts +0 -68
  807. package/dist/domain/system-components/index.js +1 -1
  808. package/dist/domain/system-components/material-override-property-transition.js +1 -1
  809. package/dist/domain/system-components/material-override-transformer.js +1 -1
  810. package/dist/domain/system-components/material-swatch.js +1 -1
  811. package/dist/domain/system-components/navigation-page.js +1 -1
  812. package/dist/domain/system-components/navigation-panel-list.js +1 -1
  813. package/dist/domain/system-components/phoenix-entity-elements/admin-data-table-sidebar.d.ts +1 -1
  814. package/dist/domain/system-components/phoenix-layout-elements/admin-connected-resource-page.d.ts +1 -1
  815. package/dist/domain/system-components/phoenix-layout-elements/admin-data-table-actions.d.ts +1 -1
  816. package/dist/domain/system-components/phoenix-layout-elements/admin-data-table-page.d.ts +1 -1
  817. package/dist/domain/system-components/pivot-point.d.ts +1 -1
  818. package/dist/domain/system-components/pivot-point.js +1 -1
  819. package/dist/domain/system-components/price.js +1 -1
  820. package/dist/domain/system-components/projected-entities.d.ts +1 -1
  821. package/dist/domain/system-components/projected-entities.js +1 -1
  822. package/dist/domain/system-components/replace-entity-recipes.d.ts +1 -1
  823. package/dist/domain/system-components/replace-entity-recipes.js +1 -1
  824. package/dist/domain/system-components/scene-entity-ambient-light.js +1 -1
  825. package/dist/domain/system-components/scene-entity-box-object.js +1 -1
  826. package/dist/domain/system-components/scene-entity-directional-light.js +1 -1
  827. package/dist/domain/system-components/scene-entity-local-material-override.js +1 -1
  828. package/dist/domain/system-components/scene-entity-material-override.d.ts +1 -1
  829. package/dist/domain/system-components/scene-entity-material-override.js +1 -1
  830. package/dist/domain/system-components/scene-entity-object-clip.js +1 -1
  831. package/dist/domain/system-components/scene-entity-object-decal.js +1 -1
  832. package/dist/domain/system-components/scene-entity-object-group.js +1 -1
  833. package/dist/domain/system-components/scene-entity-object-local-material-override.js +1 -1
  834. package/dist/domain/system-components/scene-entity-object-material-override.d.ts +1 -1
  835. package/dist/domain/system-components/scene-entity-object-material-override.js +1 -1
  836. package/dist/domain/system-components/scene-entity-object-properties.js +1 -1
  837. package/dist/domain/system-components/scene-entity-object-remote-material-override.js +1 -1
  838. package/dist/domain/system-components/scene-entity-object-text-decal.d.ts +1 -1
  839. package/dist/domain/system-components/scene-entity-object-text-decal.js +1 -1
  840. package/dist/domain/system-components/scene-entity-object-transformer.js +1 -1
  841. package/dist/domain/system-components/scene-entity-object-transimissive-material-override.d.ts +1 -1
  842. package/dist/domain/system-components/scene-entity-object-transimissive-material-override.js +1 -1
  843. package/dist/domain/system-components/scene-entity-object.js +1 -1
  844. package/dist/domain/system-components/scene-entity-point-light.js +1 -1
  845. package/dist/domain/system-components/scene-entity-properties.js +1 -1
  846. package/dist/domain/system-components/scene-entity-rect-area-light.js +1 -1
  847. package/dist/domain/system-components/scene-entity-remote-material-override.js +1 -1
  848. package/dist/domain/system-components/scene-entity-remote-object.js +1 -1
  849. package/dist/domain/system-components/scene-entity-spot-light.js +1 -1
  850. package/dist/domain/system-components/scene-entity-transimissive-material-override.d.ts +1 -1
  851. package/dist/domain/system-components/scene-entity-transimissive-material-override.js +1 -1
  852. package/dist/domain/system-components/sketching-line.d.ts +1 -1
  853. package/dist/domain/system-components/sketching-line.js +1 -1
  854. package/dist/domain/system-components/sketching-rectangle.d.ts +1 -1
  855. package/dist/domain/system-components/sketching-rectangle.js +1 -1
  856. package/dist/domain/system-components/sketching.d.ts +1 -1
  857. package/dist/domain/system-components/sketching.js +1 -1
  858. package/dist/domain/system-components/snap-axis.d.ts +1 -1
  859. package/dist/domain/system-components/snap-axis.js +1 -1
  860. package/dist/domain/system-components/snap-edge.d.ts +1 -1
  861. package/dist/domain/system-components/snap-edge.js +1 -1
  862. package/dist/domain/system-components/snap-plane.d.ts +1 -1
  863. package/dist/domain/system-components/snap-plane.js +1 -1
  864. package/dist/domain/system-components/snap-point.d.ts +1 -1
  865. package/dist/domain/system-components/snap-point.js +1 -1
  866. package/dist/domain/system-components/static-orthographic-camera-component.d.ts +1 -1
  867. package/dist/domain/system-components/static-orthographic-camera-component.js +1 -1
  868. package/dist/domain/system-components/static-perspective-camera-component.d.ts +1 -1
  869. package/dist/domain/system-components/static-perspective-camera-component.js +1 -1
  870. package/dist/domain/utils/eval-cache.d.ts +2 -3
  871. package/dist/domain/utils/map-nested-object.d.ts +1 -1
  872. package/dist/domain/utils/memo-eval.d.ts +2 -4
  873. package/dist/editor/domain-editors/use-implementation-files.d.ts +8 -8
  874. package/dist/editor/domain-editors/use-implementation-files.js +1 -1
  875. package/dist/editor/mocks/EditorMockContext.js +1 -1
  876. package/dist/i18n/locales/cs/messages.js +1 -1
  877. package/dist/i18n/locales/da/messages.js +1 -1
  878. package/dist/i18n/locales/de/messages.js +1 -1
  879. package/dist/i18n/locales/de-AT/messages.js +1 -1
  880. package/dist/i18n/locales/en/messages.js +1 -1
  881. package/dist/i18n/locales/en-AU/messages.js +1 -1
  882. package/dist/i18n/locales/en-GB/messages.js +1 -1
  883. package/dist/i18n/locales/es/messages.js +1 -1
  884. package/dist/i18n/locales/fr/messages.js +1 -1
  885. package/dist/i18n/locales/hu/messages.js +1 -1
  886. package/dist/i18n/locales/it/messages.js +1 -1
  887. package/dist/i18n/locales/nl/messages.js +1 -1
  888. package/dist/i18n/locales/pl/messages.js +1 -1
  889. package/dist/i18n/locales/pt/messages.js +1 -1
  890. package/dist/i18n/locales/ro/messages.js +1 -1
  891. package/dist/i18n/locales/sk/messages.js +1 -1
  892. package/dist/i18n/locales/tr/messages.js +1 -1
  893. package/dist/legacy/domain-cli/gen/configurator-builder.js +30 -16
  894. package/dist/legacy/domain-cli/gen/constant-expressions.js +1 -3
  895. package/dist/legacy/domain-cli/gen/defaults.js +1 -7
  896. package/dist/legacy/domain-cli/gen/implementation.js +7 -11
  897. package/dist/legacy/domain-cli/gen/invariants.js +7 -6
  898. package/dist/legacy/domain-cli/gen/relations.js +1 -1
  899. package/dist/legacy/domain-cli/utils/cache.d.ts +1 -1
  900. package/dist/legacy/domain-cli/utils/cache.js +1 -1
  901. package/dist/legacy/domain-spec/__generated/domain-schema.d.ts +81 -68
  902. package/dist/legacy/phoenix-cli/project-gen/generators/file-templates/agents/claude-md.d.ts +1 -1
  903. package/dist/legacy/phoenix-cli/project-gen/generators/file-templates/agents/cursor-rules.d.ts +1 -1
  904. package/dist/legacy/phoenix-cli/project-gen/generators/file-templates/agents/shared-sdk-content.d.ts +1 -1
  905. package/dist/legacy/phoenix-cli/project-gen/generators/file-templates/agents/shared-sdk-content.js +7 -0
  906. package/dist/legacy/phoenix-cli/project-gen/generators/file-templates/domain-index.js +17 -15
  907. package/dist/legacy/phoenix-cli/project-gen/generators/file-templates/env-example.d.ts +1 -1
  908. package/dist/legacy/phoenix-cli/project-gen/generators/file-templates/env-example.js +4 -0
  909. package/dist/legacy/phoenix-cli/project-gen/generators/file-templates/frontend-admin.js +16 -15
  910. package/dist/legacy/phoenix-cli/project-gen/generators/file-templates/frontend-configurator.js +16 -15
  911. package/dist/legacy/phoenix-cli/project-gen/generators/file-templates/frontend-embedded-admin.js +23 -22
  912. package/dist/legacy/phoenix-cli/project-gen/generators/file-templates/frontend-embedded-configurator.js +16 -15
  913. package/dist/legacy/phoenix-cli/project-gen/generators/file-templates/generator-shared.d.ts +7 -2
  914. package/dist/legacy/phoenix-cli/project-gen/generators/file-templates/generator-shared.js +8 -12
  915. package/dist/legacy/phoenix-cli/project-gen/generators/file-templates/index.d.ts +1 -1
  916. package/dist/legacy/phoenix-cli/project-gen/generators/file-templates/index.js +1 -1
  917. package/dist/legacy/phoenix-cli/project-gen/generators/file-templates/webhook-builders.js +7 -7
  918. package/dist/phoenix/application-spec/application-spec-builder.js +1 -1
  919. package/dist/phoenix/application-spec/resolve-deployment-data.d.ts +4 -3
  920. package/dist/phoenix/application-spec/resolve-deployment-data.js +2 -2
  921. package/dist/phoenix/commands/deploy.js +1 -1
  922. package/dist/phoenix/commands/init.d.ts +4 -4
  923. package/dist/phoenix/commands/init.js +1 -1
  924. package/dist/phoenix/commands/prepare-deployment-command.js +2 -2
  925. package/dist/phoenix/commands/prepare-local-environment-command.js +1 -1
  926. package/dist/phoenix/commands/prettier.js +1 -1
  927. package/dist/phoenix/scripts/build-admin.js +1 -1
  928. package/dist/phoenix/services/prepare-development-environment.js +1 -1
  929. package/dist/phoenix/services/source-archive.d.ts +1 -0
  930. package/dist/phoenix/services/source-archive.js +1 -1
  931. package/dist/phoenix/services/variant-file-session.js +1 -1
  932. package/dist/phoenix/utils/git/index.d.ts +1 -0
  933. package/dist/phoenix/utils/git/index.js +1 -0
  934. package/dist/phoenix/utils/git/is-inside-git-repository.d.ts +6 -0
  935. package/dist/phoenix/utils/git/is-inside-git-repository.js +1 -0
  936. package/dist/phoenix/utils/index.d.ts +1 -0
  937. package/dist/phoenix/utils/index.js +1 -1
  938. package/dist/react-sdk/application-runtime/hooks/use-access-service.d.ts +2 -0
  939. package/dist/react-sdk/application-runtime/hooks/use-domain-application-props.d.ts +5 -2
  940. package/dist/react-sdk/application-runtime/hooks/use-spec.d.ts +1 -1
  941. package/dist/react-sdk/application-runtime/mocks/create-mock-application-runtime.d.ts +1 -1
  942. package/dist/react-sdk/application-runtime/mocks/create-mock-application-runtime.js +1 -1
  943. package/dist/react-sdk/application-runtime/routing/access-service.d.ts +1 -0
  944. package/dist/react-sdk/application-runtime/runtime/create-application-runtime.d.ts +57 -40
  945. package/dist/react-sdk/application-runtime/runtime/create-application-runtime.js +1 -1
  946. package/dist/react-sdk/domain-context/common-hooks/use-configurator-messages.d.ts +30 -0
  947. package/dist/react-sdk/domain-context/common-hooks/use-configurator-messages.js +1 -0
  948. package/dist/react-sdk/domain-context/common-hooks/use-domain-context.d.ts +9 -9
  949. package/dist/react-sdk/domain-context/index.d.ts +2 -1
  950. package/dist/react-sdk/domain-context/index.js +1 -1
  951. package/dist/react-sdk/domain-context/system-hooks/navigation-hooks.d.ts +6 -0
  952. package/dist/react-sdk/domain-context/system-hooks/navigation-hooks.js +1 -1
  953. package/dist/react-sdk/domain-controls/hooks/use-angle-dimension.d.ts +1 -1
  954. package/dist/ui-sdk/theme/types.d.ts +1 -1
  955. package/dist/webhook/builders/common.d.ts +8 -0
  956. package/dist/webhook/builders/webhook-builder.d.ts +1 -1
  957. package/dist/webhook/builders/webhook-builder.js +1 -1
  958. package/package.json +3 -3
  959. package/schema/domain-spec.json +1115 -209
  960. package/dist/application-spec/generate-application/code/templates/env-ci.d.ts +0 -1
  961. package/dist/application-spec/generate-application/code/templates/env-ci.js +0 -25
  962. package/dist/application-spec/generate-application/code/templates/env-example.d.ts +0 -1
  963. package/dist/application-spec/generate-application/code/templates/env-example.js +0 -90
  964. package/dist/application-spec/generate-application/code/templates/prettier-ignore.d.ts +0 -1
  965. package/dist/application-spec/generate-application/code/templates/prettier-ignore.js +0 -6
  966. package/dist/application-spec/generate-application/code/templates/private-assets-readme.d.ts +0 -1
  967. package/dist/application-spec/generate-application/code/templates/private-assets-readme.js +0 -24
  968. package/dist/application-spec/generate-application/code/templates/public-assets-readme.d.ts +0 -1
  969. package/dist/application-spec/generate-application/code/templates/public-assets-readme.js +0 -24
  970. package/dist/application-spec/generate-application/code/templates/readme.d.ts +0 -1
  971. package/dist/application-spec/generate-application/code/templates/readme.js +0 -23
  972. package/dist/application-spec/generate-application/code/templates/skills/agents-md.d.ts +0 -1
  973. package/dist/application-spec/generate-application/code/templates/skills/agents-md.js +0 -2
  974. package/dist/domain/actions/action-factory.d.ts +0 -10
  975. package/dist/domain/actions/prepare-action-implementations.js +0 -5
  976. package/dist/domain/application/element-registration.js +0 -1
  977. package/dist/domain/application/handler-registration.js +0 -1
  978. package/dist/domain/application/resolve-imported-transformers.d.ts +0 -13
  979. package/dist/domain/application/resolve-imported-transformers.js +0 -1
  980. package/dist/domain/application/resource-builder.d.ts +0 -13
  981. package/dist/domain/application/resource-builder.js +0 -1
  982. package/dist/domain/components/debug-state-component.js +0 -1
  983. package/dist/domain/components/domain-component-optic.d.ts +0 -76
  984. package/dist/domain/components/domain-component-optic.js +0 -16
  985. package/dist/domain/components/drag-state-component.js +0 -1
  986. package/dist/domain/components/export-state-component.js +0 -1
  987. package/dist/domain/components/fullscreen-state-component.js +0 -1
  988. package/dist/domain/components/group-components-by-entity-id-and-name.js +0 -1
  989. package/dist/domain/components/hover-state-component.js +0 -1
  990. package/dist/domain/components/index.d.ts +0 -2
  991. package/dist/domain/components/index.js +0 -1
  992. package/dist/domain/components/navigation-state-component.js +0 -1
  993. package/dist/domain/components/selection-state-component.js +0 -1
  994. package/dist/domain/components/system-component-builder.js +0 -1
  995. package/dist/domain/components/system-virtual-entity.js +0 -1
  996. package/dist/domain/components/tool-state-component.js +0 -1
  997. package/dist/domain/components/view-state-component.js +0 -1
  998. package/dist/domain/components/viewport-state-component.js +0 -1
  999. package/dist/domain/core/expression.d.ts +0 -50
  1000. package/dist/domain/core/json-schema.js +0 -1
  1001. package/dist/domain/core/migrations.js +0 -1
  1002. package/dist/domain/core/reflection.js +0 -1
  1003. package/dist/domain/domain-context/recipe-system/recipes.d.ts +0 -57
  1004. package/dist/domain/domain-context/recipe-system/recipes.js +0 -1
  1005. package/dist/domain/expressions/constant-expressions.d.ts +0 -9
  1006. package/dist/domain/expressions/constant-expressions.js +0 -1
  1007. package/dist/domain/expressions/custom-expression.d.ts +0 -13
  1008. package/dist/domain/expressions/custom-expression.js +0 -1
  1009. package/dist/domain/expressions/index.d.ts +0 -1
  1010. package/dist/domain/expressions/index.js +0 -1
  1011. package/dist/domain/invariants/custom-invariants.d.ts +0 -22
  1012. package/dist/domain/invariants/custom-invariants.js +0 -1
  1013. package/dist/domain/invariants/invariants.d.ts +0 -68
  1014. package/dist/domain/invariants/invariants.js +0 -1
  1015. package/dist/domain/invariants/violation-component.js +0 -1
  1016. package/dist/domain/invariants/violation.js +0 -1
  1017. package/dist/domain/relations/all-of-type-relation.d.ts +0 -33
  1018. package/dist/domain/relations/all-of-type-relation.js +0 -1
  1019. package/dist/domain/relations/component-factories.js +0 -1
  1020. package/dist/domain/relations/composed-of.js +0 -1
  1021. package/dist/domain/relations/direct-relation.d.ts +0 -29
  1022. package/dist/domain/relations/indirect-relation.d.ts +0 -81
  1023. package/dist/domain/relations/indirect-relation.js +0 -1
  1024. package/dist/domain/relations/reference-component.js +0 -1
  1025. package/dist/domain/relations/relation-factory.d.ts +0 -19
  1026. package/dist/domain/relations/relation-factory.js +0 -1
  1027. package/dist/domain/relations/relation-implementation.d.ts +0 -8
  1028. package/dist/domain/system-components/angle-indicator.js +0 -1
  1029. package/dist/domain/system-components/attribute-switch.js +0 -1
  1030. package/dist/domain/system-components/autorotate-camera-component.js +0 -1
  1031. package/dist/domain/system-components/basic-sidebar-footer.js +0 -1
  1032. package/dist/domain/system-components/camera-based-hidden-entity-object.js +0 -1
  1033. package/dist/domain/system-components/camera-based-hidden-entity.js +0 -1
  1034. package/dist/domain/system-components/canvas-config.js +0 -1
  1035. package/dist/domain/system-components/canvas-custom-environment.js +0 -1
  1036. package/dist/domain/system-components/canvas-padding.js +0 -1
  1037. package/dist/domain/system-components/canvas-preset-environment.js +0 -1
  1038. package/dist/domain/system-components/child-entity-recipe-hierarchy.js +0 -1
  1039. package/dist/domain/system-components/client-side-image.js +0 -1
  1040. package/dist/domain/system-components/color-value.js +0 -1
  1041. package/dist/domain/system-components/common/angle-indicator-schema.js +0 -1
  1042. package/dist/domain/system-components/common/dimension-indicator-schema.js +0 -1
  1043. package/dist/domain/system-components/custom-price-footer.js +0 -1
  1044. package/dist/domain/system-components/dimension-indicator.js +0 -1
  1045. package/dist/domain/system-components/editable-angle-indicator.js +0 -1
  1046. package/dist/domain/system-components/editable-distance-dimension-indicator.js +0 -1
  1047. package/dist/domain/system-components/editable-offset-indicator.js +0 -1
  1048. package/dist/domain/system-components/editable-size-indicator.js +0 -1
  1049. package/dist/domain/system-components/entity-header.js +0 -1
  1050. package/dist/domain/system-components/exit-tool-mode-fab.js +0 -1
  1051. package/dist/domain/system-components/finalize-action.js +0 -1
  1052. package/dist/domain/system-components/finalize-component.js +0 -1
  1053. package/dist/domain/system-components/fit-selection-orthographic-camera-component.js +0 -1
  1054. package/dist/domain/system-components/fit-selection-perspective-camera-component.js +0 -1
  1055. package/dist/domain/system-components/fixed-header.js +0 -1
  1056. package/dist/domain/system-components/floating-header.js +0 -1
  1057. package/dist/domain/system-components/hidden-header.js +0 -1
  1058. package/dist/domain/system-components/hidden-sidebar-footer.js +0 -1
  1059. package/dist/domain/system-components/horizontal-tabs.js +0 -1
  1060. package/dist/domain/system-components/list-selector-dimension-indicator.js +0 -1
  1061. package/dist/domain/system-components/multilingual-text-value.js +0 -1
  1062. package/dist/domain/system-components/navigation-steps.js +0 -1
  1063. package/dist/domain/system-components/offset-anchors.js +0 -1
  1064. package/dist/domain/system-components/offset-indicator.js +0 -1
  1065. package/dist/domain/system-components/offset.js +0 -1
  1066. package/dist/domain/system-components/other-action.js +0 -1
  1067. package/dist/domain/system-components/property-page.js +0 -1
  1068. package/dist/domain/system-components/read-sidebar-footer.js +0 -1
  1069. package/dist/domain/system-components/replace-entity-recipe-hierarchy.js +0 -1
  1070. package/dist/domain/system-components/rotatable.js +0 -1
  1071. package/dist/domain/system-components/rotation-handle.js +0 -1
  1072. package/dist/domain/system-components/save-template-thumbnail.js +0 -1
  1073. package/dist/domain/system-components/scene-entity-add-fab.js +0 -1
  1074. package/dist/domain/system-components/scene-entity-animation.js +0 -1
  1075. package/dist/domain/system-components/scene-entity-control.js +0 -1
  1076. package/dist/domain/system-components/scene-entity-delete-fab.js +0 -1
  1077. package/dist/domain/system-components/scene-entity-floor-object.js +0 -1
  1078. package/dist/domain/system-components/scene-entity-html-hotspot.js +0 -1
  1079. package/dist/domain/system-components/scene-entity-navigation-hotspot.js +0 -1
  1080. package/dist/domain/system-components/scene-entity-object-html-hotspot.js +0 -1
  1081. package/dist/domain/system-components/scene-entity-select-hotspot.js +0 -1
  1082. package/dist/domain/system-components/scene-entity-wall-object.js +0 -1
  1083. package/dist/domain/system-components/selectable-component.js +0 -1
  1084. package/dist/domain/system-components/sidebar-tabs.js +0 -1
  1085. package/dist/domain/system-components/simple-summary.js +0 -1
  1086. package/dist/domain/system-components/size.js +0 -1
  1087. package/dist/domain/system-components/sketching-draw.js +0 -1
  1088. package/dist/domain/system-components/sketching-edit.js +0 -1
  1089. package/dist/domain/system-components/summary-component.js +0 -1
  1090. package/dist/domain/system-components/text-value.js +0 -1
  1091. package/dist/domain/system-components/tool-controls.js +0 -1
  1092. package/dist/domain/system-components/tool-menu-fab.js +0 -1
  1093. package/dist/domain/system-components/universal-sidebar-footer.js +0 -1
  1094. package/dist/domain/system-components/view-controls.js +0 -1
  1095. package/dist/phoenix/application-spec/generate-assistant-prompt.d.ts +0 -13
  1096. package/dist/phoenix/application-spec/generate-assistant-prompt.js +0 -1
  1097. /package/dist/{domain/components/component-reader-types.js → application-spec/core/expressions/relation-expression-params.js} +0 -0
  1098. /package/dist/application-spec/{core → enhanced-json}/eval-code-uses-self.d.ts +0 -0
  1099. /package/dist/application-spec/{core → enhanced-json}/eval-code-uses-self.js +0 -0
  1100. /package/dist/application-spec/{core → enhanced-json}/eval-to-constant.js +0 -0
  1101. /package/dist/domain/{core/action.js → application/assistant/assistant-manifest.js} +0 -0
  1102. /package/dist/domain/{actions → core/action}/action-factory.js +0 -0
  1103. /package/dist/domain/core/{enhanced-json-schema.js → action/action.js} +0 -0
  1104. /package/dist/domain/core/{expression.js → component/component-reader-types.js} +0 -0
  1105. /package/dist/domain/{components → core/component}/legacy-filter.js +0 -0
  1106. /package/dist/domain/{components → core/component}/system-component-filter.js +0 -0
  1107. /package/dist/domain/{components → core/component}/system-virtual-entity.d.ts +0 -0
  1108. /package/dist/domain/{components → core/component}/updates.js +0 -0
  1109. /package/dist/domain/core/{schema-validator.js → data-schema/data-cell-value.js} +0 -0
  1110. /package/dist/domain/{relations/reference-field.js → core/data-schema/data-schema-array-field.js} +0 -0
  1111. /package/dist/domain/{relations/relation-implementation.js → core/data-schema/data-schema-field-object.js} +0 -0
  1112. /package/dist/domain/{invariants → core/invariant}/builtin-invariant.js +0 -0
  1113. /package/dist/domain/{invariants → core/invariant}/violation-component.d.ts +0 -0
  1114. /package/dist/domain/core/{alias.d.ts → model/alias.d.ts} +0 -0
  1115. /package/dist/domain/core/{alias.js → model/alias.js} +0 -0
  1116. /package/dist/domain/core/{common-definitions.d.ts → model/common-definitions.d.ts} +0 -0
  1117. /package/dist/domain/core/{common-definitions.js → model/common-definitions.js} +0 -0
  1118. /package/dist/domain/core/{component.js → model/component.js} +0 -0
  1119. /package/dist/domain/core/{model.js → model/model.js} +0 -0
  1120. /package/dist/domain/core/{preset.d.ts → model/preset.d.ts} +0 -0
  1121. /package/dist/domain/core/{preset.js → model/preset.js} +0 -0
  1122. /package/dist/domain/{relations → core/relation}/direct-relation.js +0 -0
  1123. /package/dist/domain/core/{schema-validator-ajv.d.ts → schema/create-ajv-schema-validator.d.ts} +0 -0
  1124. /package/dist/domain/core/{schema-validator-ajv.js → schema/create-ajv-schema-validator.js} +0 -0
  1125. /package/dist/domain/core/{schema-validator-csp.d.ts → schema/create-csp-schema-validator.d.ts} +0 -0
  1126. /package/dist/domain/core/{schema-validator-csp.js → schema/create-csp-schema-validator.js} +0 -0
  1127. /package/dist/domain/core/{enhanced-json-schema.d.ts → schema/enhanced-json-schema.d.ts} +0 -0
  1128. /package/dist/domain/core/{json-schema.d.ts → schema/extended-schema-validator.d.ts} +0 -0
  1129. /package/dist/domain/core/{schema-validator.d.ts → schema/schema-validator.d.ts} +0 -0
  1130. /package/dist/domain/core/{state.js → state/state.js} +0 -0
  1131. /package/dist/domain/{expressions → domain-runtime/spec}/memoize-expression.js +0 -0
  1132. /package/dist/domain/{expressions → domain-runtime/spec}/prepare-domain-expressions.js +0 -0
  1133. /package/dist/domain/{system-components → extensions}/camera-based-hidden-entity-object.d.ts +0 -0
  1134. /package/dist/domain/{system-components → extensions}/camera-based-hidden-entity.d.ts +0 -0
  1135. /package/dist/domain/{system-components → extensions}/canvas-custom-environment.d.ts +0 -0
  1136. /package/dist/domain/{system-components → extensions}/color-value.d.ts +0 -0
  1137. /package/dist/domain/{system-components → extensions}/common/dimension-indicators.d.ts +0 -0
  1138. /package/dist/domain/{system-components → extensions}/common/dimension-indicators.js +0 -0
  1139. /package/dist/domain/{system-components → extensions}/common/editable-indicator-button-variant.d.ts +0 -0
  1140. /package/dist/domain/{system-components → extensions}/common/editable-indicator-button-variant.js +0 -0
  1141. /package/dist/domain/{system-components → extensions}/custom-price-footer.d.ts +0 -0
  1142. /package/dist/domain/{system-components → extensions}/finalize-component.d.ts +0 -0
  1143. /package/dist/domain/{system-components → extensions}/fit-selection-orthographic-camera-component.d.ts +0 -0
  1144. /package/dist/domain/{system-components → extensions}/fit-selection-perspective-camera-component.d.ts +0 -0
  1145. /package/dist/domain/{system-components → extensions}/multilingual-text-value.d.ts +0 -0
  1146. /package/dist/domain/{system-components → extensions}/rotatable.d.ts +0 -0
  1147. /package/dist/domain/{system-components → extensions}/scene-entity-animation.d.ts +0 -0
  1148. /package/dist/domain/{system-components → extensions}/scene-entity-control.d.ts +0 -0
  1149. /package/dist/domain/{system-components → extensions}/scene-entity-floor-object.d.ts +0 -0
  1150. /package/dist/domain/{system-components → extensions}/scene-entity-wall-object.d.ts +0 -0
  1151. /package/dist/domain/{system-components → extensions}/selectable-component.d.ts +0 -0
  1152. /package/dist/domain/{system-components → extensions}/simple-summary.d.ts +0 -0
  1153. /package/dist/domain/{system-components → extensions}/summary-component.d.ts +0 -0
  1154. /package/dist/domain/{system-components → extensions}/text-value.d.ts +0 -0
  1155. /package/dist/domain/{system-components → extensions}/tool-controls.d.ts +0 -0
  1156. /package/dist/domain/{system-components → extensions}/view-controls.d.ts +0 -0
@@ -1,8 +1,8 @@
1
1
  import type { AnyClientTool } from '@tanstack/ai';
2
2
  import { type UIMessage } from '@tanstack/ai-client';
3
3
  import { type ObservableWithLastValue } from '@salsita-ai/common/utils';
4
- import type { AuthorizedPhoenixApiClient } from '#package/client';
5
- import type { DomainContextSelectors, DomainServicesSelectors, InitializableSystem, SpecSelectors } from '#package/domain';
4
+ import { type AuthorizedPhoenixApiClient } from '#package/client';
5
+ import type { DomainContextSelectors, DomainServicesSelectors, InitializableSystem, SessionAssistantSetup, SpecSelectors } from '#package/domain';
6
6
  import type { ConfiguratorExtensionSelectors } from '../../selectors.js';
7
7
  /** A tool of the assistant that the model calls and the browser runs, as the chat client accepts it. */
8
8
  export type AssistantClientTool = AnyClientTool;
@@ -18,6 +18,8 @@ export interface AssistantSystemContext {
18
18
  readonly specSelectors: SpecSelectors;
19
19
  readonly getConfigurationId: () => string;
20
20
  readonly getAuthorizedClient: () => AuthorizedPhoenixApiClient<any, any, any>;
21
+ /** The assistant the initialized session runs: its tools, its exposed fields and whether chat runs at all. */
22
+ readonly getAssistantSetup: () => SessionAssistantSetup;
21
23
  }
22
24
  /**
23
25
  * The conversation with the assistant as the panel paints it. One value is published per change, so
@@ -39,6 +41,25 @@ export interface AssistantChatSnapshot {
39
41
  readonly isContinuable: boolean;
40
42
  /** False until the first request of the chat, the thread read, was answered or failed. */
41
43
  readonly isLoaded: boolean;
44
+ /**
45
+ * True while a thread this session may not continue is being continued in a new one, which the
46
+ * user's next message starts; see {@link AssistantSystem.resume}.
47
+ */
48
+ readonly isResuming: boolean;
49
+ /**
50
+ * The closed threads the painted thread continues, oldest first: the ones that were resumed while
51
+ * the chat was open, and the ones loaded with {@link AssistantSystem.loadEarlierThread}.
52
+ */
53
+ readonly earlierThreads: ReadonlyArray<AssistantEarlierThreadSnapshot>;
54
+ /** True when the server holds a thread older than the oldest painted one. */
55
+ readonly hasEarlierThread: boolean;
56
+ /** True while that older thread is being loaded. */
57
+ readonly isLoadingEarlierThread: boolean;
58
+ }
59
+ /** A closed thread of the conversation as the panel paints it above the thread that continues it. */
60
+ export interface AssistantEarlierThreadSnapshot {
61
+ readonly threadId: string;
62
+ readonly messages: ReadonlyArray<UIMessage>;
42
63
  }
43
64
  /**
44
65
  * The built-in assistant panel as a layout and the toolbar button see it: whether it is open, and
@@ -77,6 +98,32 @@ export declare class AssistantSystem implements InitializableSystem {
77
98
  * background. Each leaves the set when its reply ends or when a new chat takes its thread over.
78
99
  */
79
100
  private readonly _finishing;
101
+ /**
102
+ * The thread before the oldest painted one, as the server named it; nothing when the painted
103
+ * threads start the conversation. `hasEarlierThread` of the chat says whether it is set.
104
+ */
105
+ private _olderThreadId;
106
+ /** The resume that is running, so two sends that find the thread locked share one. */
107
+ private _resuming;
108
+ /**
109
+ * The message the server refused on a chat because its thread cannot be continued, by where it
110
+ * starts in the chat's messages: it is painted, but it is not part of the thread, so a resume
111
+ * leaves it out of the closed thread it paints above the new one.
112
+ */
113
+ private _refused;
114
+ /**
115
+ * The chat a message is being sent on for the first time. When the server refuses that message
116
+ * because the thread cannot be continued, the refusal is not a failure of the chat: the thread is
117
+ * resumed and the message is sent again; see `send`.
118
+ */
119
+ private _firstAttempt;
120
+ /**
121
+ * Identity of the chain of threads that is painted. A resumed chat keeps it, because its new
122
+ * thread continues the same chain; any other new chat starts another one.
123
+ */
124
+ private _chain;
125
+ /** The earlier thread that is being loaded, so a second press loads nothing twice. */
126
+ private _loadingThreadId;
80
127
  private readonly _recorder;
81
128
  /** The recorder's subscription to the committed emissions of the store; made by the first `initialize()`. */
82
129
  private _recording;
@@ -118,7 +165,7 @@ export declare class AssistantSystem implements InitializableSystem {
118
165
  * not interrupted, so an `apply` that has started may still commit. The background reply keeps
119
166
  * the configuration and the authorized client it started with.
120
167
  *
121
- * The background reply ends early when a new chat starts for the same configuration, which is
168
+ * The background reply is disconnected when a new chat starts for the same configuration, which is
122
169
  * what opening the configuration again does: see `_takeOverThread`.
123
170
  */
124
171
  activate: () => (() => void);
@@ -126,8 +173,49 @@ export declare class AssistantSystem implements InitializableSystem {
126
173
  * Sends a user message with the record of what changed in the configuration since the agent last
127
174
  * acted, which the server puts in front of the message for the model. The record is taken only
128
175
  * when there is a chat to send it on, because taking it moves its baseline.
176
+ *
177
+ * A thread can end in a tool call that nothing will answer: its reply parked while no page was
178
+ * open, or the page that ran the tool was left before the result was sent. The client refuses to
179
+ * send while it waits on such a call, so the wait is given up first, and the server records for
180
+ * the model that the call got no result.
181
+ *
182
+ * A thread this session may not continue is resumed first, in a new thread; see `resume`. When
183
+ * that fails the message is not sent.
184
+ *
185
+ * The chat can be out of date about that: the thread reached its size limit with the reply before
186
+ * this message, or the assistant's setup changed while the configurator stayed open. The server
187
+ * then refuses the message and says that the thread cannot be continued. The message stays
188
+ * painted while the thread is resumed, and is then sent again on the new thread, with the change
189
+ * record it was first sent with. This happens once: a refusal of the second attempt is the
190
+ * failure it is. When resuming fails, the message is left as any message that failed to send:
191
+ * painted, with the failure as the error of the chat.
192
+ *
193
+ * Accepted: when the server refuses the compaction itself with a conflict, because another tab
194
+ * compacted the thread or a run is still running, the thread is read again (see `resume`) and
195
+ * the refused message is gone without a notice. It takes two tabs or a run racing the send, and
196
+ * the user writes the message again, as after any reload of a thread that failed.
197
+ *
198
+ * It never rejects: a message the client could not send is reported as the error of the chat.
129
199
  */
130
200
  send: (content: string) => Promise<void>;
201
+ /**
202
+ * Makes the chat ready for the next message. A thread the server no longer lets this session
203
+ * continue, because the assistant's setup changed since it was started or the thread reached
204
+ * its size limit, is compacted there: the
205
+ * server closes it and opens a thread that starts from its summary. The messages painted so far
206
+ * move to `earlierThreads`, and a new client takes the new thread over.
207
+ *
208
+ * Resolves to whether a message can be sent now: at once for a thread that can continue, and
209
+ * `false` when there is no chat or the compaction failed, which is reported as the error of the
210
+ * chat. It never rejects. Calling it again runs the compaction again. A compaction the server
211
+ * refuses with a conflict is not a failure: the thread is read again and `false` is returned.
212
+ */
213
+ resume: () => Promise<boolean>;
214
+ /**
215
+ * Loads the thread before the oldest painted one and paints it above. Does nothing when there is
216
+ * none or one is being loaded. A load that fails is logged and can be asked for again.
217
+ */
218
+ loadEarlierThread: () => Promise<void>;
131
219
  /**
132
220
  * Stops the reply on both sides. Closing the stream alone keeps the server run going, because a
133
221
  * closed connection is also how a reload looks and a reload must be able to rejoin the run.
@@ -141,6 +229,14 @@ export declare class AssistantSystem implements InitializableSystem {
141
229
  reloadThread: () => void;
142
230
  setOpen: (open: boolean) => void;
143
231
  setInputFocused: (isInputFocused: boolean) => void;
232
+ /**
233
+ * Where the message starts that is being sent on the chat for the first time and that the server
234
+ * refused because its thread cannot be continued, so it never reached the thread; `-1` when there
235
+ * is no such message. A refused continuation of a reply is not one: its message is stored.
236
+ */
237
+ private _findRefusedMessageIndex;
238
+ private _sendOn;
239
+ private _resume;
144
240
  private _committedState;
145
241
  private _patchPanel;
146
242
  /**
@@ -152,9 +248,14 @@ export declare class AssistantSystem implements InitializableSystem {
152
248
  * and the new one for real, and both would send the result back, of which the server accepts one.
153
249
  * The model could be told that nothing was run about a change that was made.
154
250
  *
155
- * Stopping a client only closes its stream in the browser. Nothing is cancelled on the server, so
156
- * the run goes on there and the new chat rejoins it. A chat that finishes a reply for another
157
- * configuration is on another thread and is left alone.
251
+ * Stopping a client closes its stream in the browser and cancels nothing on the server: a run that
252
+ * is still producing goes on there and the new chat rejoins it. The stopped client also drops the
253
+ * result of a tool call that is still running in it, and any continuation it has not sent yet. Such
254
+ * a call still finishes, so an `apply` may commit, but the server never gets its result: the run is
255
+ * parked on the call with nothing running for the new chat to rejoin, and the thread waits on it
256
+ * until the user's next message gives the wait up; see `send`.
257
+ *
258
+ * A chat that finishes a reply for another configuration is on another thread and is left alone.
158
259
  */
159
260
  private _takeOverThread;
160
261
  private _startClient;
@@ -1 +1 @@
1
- import{ChatClient as t,fetchServerSentEvents as e}from"@tanstack/ai-client";import{BehaviorSubject as i}from"rxjs";import{skip as s}from"rxjs/operators";import{isShallowEqual as a}from"@salsita-ai/common/utils";import{createBrowserDetailsClientTool as n}from"./browser-details.js";import{ChangeRecorder as r}from"./change-recorder.js";import{createApplyClientTool as o,createQueryClientTool as c}from"./graphql-tools.js";let l=Object.freeze({messages:Object.freeze([]),isLoading:!1,error:void 0,failedStatus:void 0,isContinuable:!0,isLoaded:!1}),h=Object.freeze({open:!1,hasUnreadReply:!1,isInputFocused:!1}),d=Object.freeze({}),u=Object.freeze({results:Object.freeze([]),committed:!1,sideEffects:Object.freeze([]),message:"Nothing was run, because the user closed the configurator while this reply was being written. Do not call any more tools in this reply and end it now. The tools work again as soon as the user writes the next message."}),_=t=>{if(t.getError())return!0;let e=t.getMessages().at(-1)?.parts.at(-1);return e?.type!=="tool-call"&&e?.type!=="tool-result"};export class AssistantSystem{_context;_tools;_chat=new i(l);_panel=new i(h);_activation=null;_current=null;_finishing=new Set;_recorder;_recording=null;constructor(t){this._context=t;let{configuratorExtensionSelectors:e,domainContextSelectors:i,domainServicesSelectors:s,specSelectors:a}=t;this._recorder=new r({maxEntities:30},{readers:{selectedEntityId:t=>i.getNavigationSystem().getActiveSelectionState(t),navigationState:t=>i.getNavigationSystem().getActiveNavigationState(t),viewState:t=>i.getNavigationSystem().getActiveViewState(t),toolState:t=>i.getNavigationSystem().getActiveToolState(t)},getExposedFields:()=>a.getAssistant()?.fields??d,resolveLocalizable:t=>s.getResolveLocalizable()(t)});let l={getGraphQLSystem:()=>e.getGraphQLSystem(),getStoreSystem:()=>i.getStoreSystem(),getActiveMode:()=>i.getActiveMode(),clearChanges:()=>this._recorder.clear(this._committedState())};this._tools=[n(),c(l),o(l)]}chat$=this._chat;panel$=this._panel;initialize=()=>{let{committed:t}=this._context.domainContextSelectors.getStoreSystem().stateSlices;this._recording??=t.pipe(s(1)).subscribe(this._recorder.record),this._recorder.reset(t.value.state),this._endChat(),this._patchPanel(h),this._activation&&this._startClient()};activate=()=>{this._endChat();let t={};return this._activation=t,this._startClient(),()=>{this._activation===t&&(this._activation=null,this._endChat())}};send=async t=>{let e=this._current;if(!e)return;let i={changes:this._recorder.take(this._committedState())};await e.client.sendMessage({content:t,metadata:i})};stop=async()=>{let t=this._current;if(!t)return;let e=t.client.getCurrentRunId();if(t.client.stop(),null!=e)try{let i=t.getConnection();await fetch(`${i.url}/runs/${encodeURIComponent(e)}/cancel`,{method:"POST",headers:await i.headers()})}catch(t){this._context.domainServicesSelectors.getLogger().warn("Could not cancel the assistant run on the server",{error:t})}};reloadThread=()=>{if(!this._activation)return;let t=this._retireChat();t?.client.stop(),t?.dispose(),this._recorder.reset(this._committedState()),this._startClient()};setOpen=t=>{this._patchPanel(t?{open:t,hasUnreadReply:!1}:{open:t,isInputFocused:!1})};setInputFocused=t=>{this._patchPanel({isInputFocused:t})};_committedState=()=>this._context.domainContextSelectors.getStoreSystem().stateSlices.committed.value.state;_patchPanel=t=>{let e={...this._panel.value,...t};a(e,this._panel.value)||this._panel.next(e)};_takeOverThread=t=>{for(let e of this._finishing)e.configurationId===t&&(e.client.stop(),e.dispose())};_startClient=()=>{let i={active:!0},s=this._context.getConfigurationId();this._takeOverThread(s);let n=this._context.getAuthorizedClient(),r=()=>n.getAssistantChatConnection(s),o=t=>{if(!i.active)return;let e={...this._chat.value,...t};a(e,this._chat.value)||this._chat.next(e)},c=async(t,e)=>{let i=await fetch(t,e).finally(()=>o({isLoaded:!0})),s=i.headers.get("x-assistant-thread-continuable");return o({failedStatus:i.ok?void 0:i.status,...null!=s&&{isContinuable:"false"!==s}}),i},l=async()=>({headers:await r().headers(),fetchClient:c}),h=e(()=>r().url,l),d=e(()=>`${r().url}/runs`,l),g=this._tools.map(t=>({...t,execute:(e,s)=>i.active?t.execute?.(e,s):u})),p=new t({threadId:`assistant:${s}`,connection:{...h,joinRun:d.joinRun},persistence:!0,history:{pageSize:50},tools:g,onMessagesChange:t=>o({messages:t}),onLoadingChange:t=>{let e=i.active&&this._chat.value.isLoading;o({isLoading:t}),!t&&_(p)&&(i.active?e&&!this._panel.value.open&&this._patchPanel({hasUnreadReply:!0}):v())},onErrorChange:t=>{i.active&&t!==this._chat.value.error&&(o({error:t}),t&&this._context.domainServicesSelectors.getLogger().error("The assistant request failed",{status:this._chat.value.failedStatus},t))}}),m=!1,v=()=>{m||(m=!0,this._finishing.delete(f),p.dispose())},f={client:p,configurationId:s,generation:i,getConnection:r,dispose:v};this._current=f,p.attach()};_retireChat=()=>{let t=this._current;return this._current=null,t&&(t.generation.active=!1),this._chat.value!==l&&this._chat.next(l),t};_endChat=()=>{let t=this._retireChat();if(t){if(!t.client.getIsLoading()&&_(t.client))return void t.dispose();this._finishing.add(t)}}}
1
+ import{ChatClient as e,fetchServerSentEvents as t}from"@tanstack/ai-client";import{BehaviorSubject as i}from"rxjs";import{skip as s}from"rxjs/operators";import{isShallowEqual as a}from"@salsita-ai/common/utils";import{AssistantRequestError as r}from"#package/client";import{createBrowserDetailsClientTool as n}from"./browser-details.js";import{ChangeRecorder as h}from"./change-recorder.js";import{createApplyClientTool as o,createQueryClientTool as l}from"./graphql-tools.js";let c=Object.freeze({messages:Object.freeze([]),isLoading:!1,error:void 0,failedStatus:void 0,isContinuable:!0,isLoaded:!1,isResuming:!1,earlierThreads:Object.freeze([]),hasEarlierThread:!1,isLoadingEarlierThread:!1}),d=Object.freeze({open:!1,hasUnreadReply:!1,isInputFocused:!1}),u=Object.freeze({}),_=Object.freeze({results:Object.freeze([]),committed:!1,sideEffects:Object.freeze([]),message:"Nothing was run, because the user closed the configurator while this reply was being written. Do not call any more tools in this reply and end it now. The tools work again as soon as the user writes the next message."}),g=e=>{if(e.getError())return!0;let t=e.getMessages().at(-1)?.parts.at(-1);return t?.type!=="tool-call"&&t?.type!=="tool-result"};export class AssistantSystem{_context;_tools;_chat=new i(c);_panel=new i(d);_activation=null;_current=null;_finishing=new Set;_olderThreadId=null;_resuming=null;_refused=null;_firstAttempt=null;_chain={};_loadingThreadId=null;_recorder;_recording=null;constructor(e){this._context=e;let{configuratorExtensionSelectors:t,domainContextSelectors:i,domainServicesSelectors:s,getAssistantSetup:a}=e;this._recorder=new h({maxEntities:30},{readers:{selectedEntityId:e=>i.getNavigationSystem().getActiveSelectionState(e),navigationState:e=>i.getNavigationSystem().getActiveNavigationState(e),viewState:e=>i.getNavigationSystem().getActiveViewState(e),toolState:e=>i.getNavigationSystem().getActiveToolState(e)},getExposedFields:()=>a().manifest?.fields??u,resolveLocalizable:e=>s.getResolveLocalizable()(e)});let r={getGraphQLSystem:()=>t.getGraphQLSystem(),getStoreSystem:()=>i.getStoreSystem(),getActiveMode:()=>i.getActiveMode(),clearChanges:()=>this._recorder.clear(this._committedState())};this._tools=[n(),l(r),o(r)]}chat$=this._chat;panel$=this._panel;initialize=()=>{let{committed:e}=this._context.domainContextSelectors.getStoreSystem().stateSlices;this._recording??=e.pipe(s(1)).subscribe(this._recorder.record),this._recorder.reset(e.value.state),this._endChat(),this._patchPanel(d),this._activation&&this._startClient()};activate=()=>{this._endChat();let e={};return this._activation=e,this._startClient(),()=>{this._activation===e&&(this._activation=null,this._endChat())}};send=async e=>{if(!this._chat.value.isContinuable&&!await this.resume())return;let t=this._current;if(!t)return;let i={changes:this._recorder.take(this._committedState())};this._firstAttempt=t;try{await this._sendOn(t,e,i);let s=this._findRefusedMessageIndex(t);if(-1===s)return;this._refused={chat:t,index:s}}finally{this._firstAttempt===t&&(this._firstAttempt=null)}if(!await this.resume())return;let s=this._current;s&&await this._sendOn(s,e,i)};resume=async()=>{let e=this._current;if(!e)return!1;if(this._chat.value.isContinuable)return!0;if(this._resuming)return this._resuming;let t=this._resume(e).finally(()=>{this._resuming===t&&(this._resuming=null)});return this._resuming=t,t};loadEarlierThread=async()=>{let e=this._current,t=this._olderThreadId;if(!e||null===t||this._loadingThreadId===t)return;let i=this._chain;this._loadingThreadId=t,this._chat.next({...this._chat.value,isLoadingEarlierThread:!0});try{let s=await e.authorizedClient.getAssistantEarlierThread(e.configurationId,t,50);if(this._chain!==i||this._olderThreadId!==t)return;this._olderThreadId=s.previousThreadId,this._chat.next({...this._chat.value,earlierThreads:[{threadId:t,messages:s.messages},...this._chat.value.earlierThreads],hasEarlierThread:null!==s.previousThreadId})}catch(e){this._context.domainServicesSelectors.getLogger().warn("Could not load the earlier assistant conversation",{error:e})}finally{this._chain===i&&this._loadingThreadId===t&&(this._loadingThreadId=null,this._chat.next({...this._chat.value,isLoadingEarlierThread:!1}))}};stop=async()=>{let e=this._current;if(!e)return;let t=e.client.getCurrentRunId();if(e.client.stop(),null!=t)try{let i=e.getConnection();await fetch(`${i.url}/runs/${encodeURIComponent(t)}/cancel`,{method:"POST",headers:await i.headers()})}catch(e){this._context.domainServicesSelectors.getLogger().warn("Could not cancel the assistant run on the server",{error:e})}};reloadThread=()=>{if(!this._activation)return;let e=this._retireChat();e?.client.stop(),e?.dispose(),this._recorder.reset(this._committedState()),this._startClient()};setOpen=e=>{this._patchPanel(e?{open:e,hasUnreadReply:!1}:{open:e,isInputFocused:!1})};setInputFocused=e=>{this._patchPanel({isInputFocused:e})};_findRefusedMessageIndex=e=>{var t;let i,{failedStatus:s,isContinuable:a}=this._chat.value;return this._firstAttempt===e&&e.generation.active&&409===s&&!a?(i=(t=e.client.getMessages()).map(e=>e.role).lastIndexOf("user"),t.slice(i+1).every(e=>0===e.parts.length)?i:-1):-1};_sendOn=async(e,t,i)=>{let{client:s}=e;s.getIsLoading()||null===s.getResumeState()||s.stop();try{await s.sendMessage({content:t,metadata:i})}catch(i){let t=i instanceof Error?i:Error(String(i));e.generation.active&&this._chat.next({...this._chat.value,error:t}),this._context.domainServicesSelectors.getLogger().error("The assistant message could not be sent",{},t)}};_resume=async e=>{this._chat.next({...this._chat.value,isResuming:!0,error:void 0,failedStatus:void 0});try{let{previousThreadId:t}=await e.authorizedClient.compactAssistantThread(e.configurationId);if(!e.generation.active)return!1;let{messages:i,earlierThreads:s,hasEarlierThread:a}=this._chat.value,r=this._refused?.chat===e?i.slice(0,this._refused.index):i;return e.generation.active=!1,this._current=null,e.client.stop(),e.dispose(),this._chat.next({...c,earlierThreads:[...s,{threadId:t,messages:r}],hasEarlierThread:a,isLoadingEarlierThread:null!==this._loadingThreadId}),this._startClient(),!0}catch(i){let t=i instanceof Error?i:Error(String(i));if(t instanceof r&&409===t.status)return e.generation.active&&this.reloadThread(),!1;return e.generation.active&&this._chat.next({...this._chat.value,isResuming:!1,error:t,failedStatus:t instanceof r?t.status:void 0}),this._context.domainServicesSelectors.getLogger().error("The assistant thread could not be resumed",{},t),!1}};_committedState=()=>this._context.domainContextSelectors.getStoreSystem().stateSlices.committed.value.state;_patchPanel=e=>{let t={...this._panel.value,...e};a(t,this._panel.value)||this._panel.next(t)};_takeOverThread=e=>{for(let t of this._finishing)t.configurationId===e&&(t.client.stop(),t.dispose())};_startClient=()=>{let i={active:!0},s=this._context.getConfigurationId();this._takeOverThread(s);let r=this._context.getAuthorizedClient(),n=()=>{if(i.active){let{manifest:e,error:t}=this._context.getAssistantSetup();if(t)throw t;if(!e)throw Error("The assistant is disabled for this session.")}return r.getAssistantChatConnection(s)},h=e=>{if(!i.active)return;let t={...this._chat.value,...e};a(t,this._chat.value)||this._chat.next(t)},o=async(e,t)=>{let s=await fetch(e,t).finally(()=>h({isLoaded:!0})),a=s.headers.get("x-assistant-thread-continuable");return null!=a&&s.ok&&i.active&&0===this._chat.value.earlierThreads.length&&(this._olderThreadId=s.headers.get("x-assistant-previous-thread")),h({failedStatus:s.ok?void 0:s.status,...null!=a&&{isContinuable:"false"!==a,hasEarlierThread:null!==this._olderThreadId}}),s},l=async()=>({headers:await n().headers(),fetchClient:o}),c=t(()=>n().url,l),d=t(()=>`${n().url}/runs`,l),u=this._tools.map(e=>({...e,execute:(t,s)=>{if(!i.active)return _;let{manifest:a,error:r}=this._context.getAssistantSetup();return r||!a?{error:r?.message??"The assistant is disabled for this session."}:e.execute?.(t,s)}})),f=new e({threadId:`assistant:${s}`,connection:{...c,joinRun:d.joinRun},persistence:!0,history:{pageSize:50},tools:u,onMessagesChange:e=>h({messages:e}),onLoadingChange:e=>{let t=i.active&&this._chat.value.isLoading;h({isLoading:e}),!e&&g(f)&&(i.active?t&&!this._panel.value.open&&this._patchPanel({hasUnreadReply:!0}):v())},onErrorChange:e=>{i.active&&e!==this._chat.value.error&&(!e||-1===this._findRefusedMessageIndex(p))&&(h({error:e}),e&&this._context.domainServicesSelectors.getLogger().error("The assistant request failed",{status:this._chat.value.failedStatus},e))}}),m=!1,v=()=>{m||(m=!0,this._finishing.delete(p),f.dispose())},p={client:f,configurationId:s,generation:i,authorizedClient:r,getConnection:n,dispose:v};this._current=p,f.attach()};_retireChat=()=>{let e=this._current;return this._current=null,e&&(e.generation.active=!1),this._chain={},this._olderThreadId=null,this._resuming=null,this._refused=null,this._loadingThreadId=null,this._chat.value!==c&&this._chat.next(c),e};_endChat=()=>{let e=this._retireChat();if(e){if(!e.client.getIsLoading()&&g(e.client))return void e.dispose();this._finishing.add(e)}}}
@@ -1,6 +1,6 @@
1
1
  import type { Object3D, Vector2, Vector3 } from 'three';
2
2
  import type { ObservableWithLastValue } from '@salsita-ai/common/utils';
3
- import type { DomainContextSelectors, DomainEntity, DomainEntityId, DomainServicesSelectors, DomainState, DraggableSurface } from '#package/domain';
3
+ import type { DomainContextSelectors, DomainEntity, DomainEntityId, DomainServicesSelectors, DomainState, DraggableSurface, RotatableSurface } from '#package/domain';
4
4
  import type { ConfiguratorExtensionSelectors } from '../../selectors.js';
5
5
  /**
6
6
  * Constructor context of a `DragAndDropSystem`. Same-layer configurator peers are reached through
@@ -17,7 +17,7 @@ export interface DraggableState {
17
17
  readonly type: 'draggable';
18
18
  readonly entityId: DomainEntityId<string>;
19
19
  readonly originalMouseDiff: Vector3;
20
- readonly draggingPlanes: DraggableSurface[];
20
+ readonly draggingPlanes: readonly DraggableSurface[];
21
21
  readonly dragHandleInstance: string;
22
22
  readonly newWorldPosition: Vector3;
23
23
  readonly originalWorldPosition: Vector3;
@@ -28,7 +28,7 @@ export interface RotationDraggingState {
28
28
  readonly type: 'rotation';
29
29
  readonly entityId: DomainEntityId<string>;
30
30
  readonly originalMouseVector: Vector2;
31
- readonly draggingPlane: DraggableSurface;
31
+ readonly draggingPlane: RotatableSurface;
32
32
  readonly originalEntityVector: Vector3;
33
33
  readonly initialAngle: number;
34
34
  readonly dragHandleTarget: string;
@@ -1 +1 @@
1
- import{findAssistantFieldOptions as e,findAssistantRecipeGroups as t,modifyEntityUpdateTag as i,prepareAssistantRecipeUpdates as r,readAssistantFieldOptions as n,readAssistantRecipeGroup as s,systemUpdateFactory as a}from"#package/domain";import{readSideEffects as o}from"./side-effects.js";let d=e=>({ok:!1,root:null,changedEntities:[],deletedEntityIds:[],sideEffects:[],errors:e}),l=(e,{state:t},{recipes:i,prepareStateEmission:r,find$Entity:n})=>{let{validity:s,state:a,updates:l}=r(e,t,"committed");if(s.valid){let e=new Map(t.entities.map(e=>[e.id,e])),r=new Set(a.entities.map(e=>e.id));return{ok:!0,root:n(a.rootEntityId,a),changedEntities:a.entities.filter(t=>e.get(t.id)!==t).flatMap(e=>n(e.id,a)??[]),deletedEntityIds:t.entities.map(e=>e.id).filter(e=>!r.has(e)),sideEffects:o(l,i.resolveLocalizable),errors:[]}}return d("uncaught"===s.severity?[{type:"uncaught",entityId:null,message:s.error.message}]:s.entityViolations.filter(({violation:e})=>e.severity===s.severity).map(({entityId:e,violation:t})=>({type:t.type,entityId:e,message:void 0===t.message?null:i.resolveLocalizable(t.message)})))};export const createEntityMeta=(o,c)=>{let p=e=>()=>t(c.manifest,e,o.entity.type).flatMap(t=>{let i=s(e,t,o.entity.id,o.state,c.recipes);return i?[((e,t,i)=>{let{group:n,label:s,description:a,recipes:o}=e,{resolveLocalizable:c}=i.recipes;return{groupId:n.groupId,name:void 0===s?n.instanceName:c(s),description:n.description??(void 0===a?null:c(a)),recipes:o.map(n=>((e,t,i,n)=>{let{key:s,item:a}=e,{resolveLocalizable:o}=n.recipes;return{key:s,name:o(a.title),description:void 0===a.description?null:o(a.description),imageUrl:void 0===a.thumbnailUrl?null:o(a.thumbnailUrl),dryRun:()=>t.group.dryRuns?((e,t,i,n)=>{let{updates:s,error:a}=((e,t,{entity:i,state:n},{recipes:s})=>{try{return{updates:r(e,t,i.id,n,s),error:void 0}}catch(e){if("child"===t.target.kind)throw e;return{updates:void 0,error:e instanceof Error?e.message:String(e)}}})(e,t,i,n);return void 0===s?d([{type:"uncaught",entityId:null,message:a}]):l(s,i,n)})(e,t,i,n):null}})(n,e,t,i))}})(i,o,c)]:[]});return{...Object.fromEntries(e(c.manifest,o.entity.type).map(e=>[e.edgeName,()=>n(e,o.entity.id,o.state,c.recipes)?.map(t=>({...t,dryRun:()=>e.dryRuns?(({field:e},{value:t},r,n)=>{let{entity:s}=r,o=Object.entries(Object.entries(n.manifest.writableFields??{}).find(([e])=>e===s.type)?.[1]??{}).find(([t])=>t===e)?.[1];if(void 0===o)throw Error(`The options of "${e}" on "${s.id}" cannot be dry-run: the schema lists them, but the configurator has no writable field "${e}" on ${s.type}. Regenerate the application so the schema matches the configurator.`);let c=r.state.entities.find(e=>e.id===s.id),p={[o]:t},u=c?n.validateEntity({...c,...p}):{success:!0};return u.success?l([a.DomainEntityModification({entityId:s.id,stateDelta:p,updateTag:i})],r,n):d([{type:"uncaught",entityId:s.id,message:`Writing ${JSON.stringify(t)} to "${e}" would make "${s.id}" an invalid ${s.type}: ${u.errors.join("; ")}.${e===o?"":` The message names the stored property: ${e} is stored as ${o}.`} The option comes from the configurator and cannot be corrected from here, so do not write it.`}])})(e,t,o,c):null}))??null])),childRecipes:p("child"),replaceRecipes:p("replace")}};
1
+ import{findAssistantFieldOptions as e,findAssistantRecipeGroups as t,modifyEntityUpdateTag as i,prepareAssistantRecipeUpdates as r,readAssistantFieldOptions as n,readAssistantRecipeGroup as o,systemUpdateFactory as s}from"#package/domain";import{readSideEffects as a}from"./side-effects.js";let d=e=>({ok:!1,root:null,changedEntities:[],deletedEntityIds:[],sideEffects:[],errors:e}),l=(e,{state:t},{recipes:i,prepareStateEmission:r,find$Entity:n})=>{let{validity:o,state:s,updates:l}=r(e,t,"committed");if(o.valid){let e=new Map(t.entities.map(e=>[e.id,e])),r=new Set(s.entities.map(e=>e.id));return{ok:!0,root:n(s.rootEntityId,s),changedEntities:s.entities.filter(t=>e.get(t.id)!==t).flatMap(e=>n(e.id,s)??[]),deletedEntityIds:t.entities.map(e=>e.id).filter(e=>!r.has(e)),sideEffects:a(l,i.resolveLocalizable),errors:[]}}return d("uncaught"===o.severity?[{type:"uncaught",entityId:null,message:o.error.message}]:o.entityViolations.filter(({violation:e})=>e.severity===o.severity).map(({entityId:e,violation:t})=>({type:t.type,entityId:e,message:void 0===t.message?null:i.resolveLocalizable(t.message)})))};export const createEntityMeta=(a,u)=>{let c=e=>()=>t(u.manifest,e,a.entity.type).flatMap(t=>{let i=o(e,t,a.entity.id,a.state,u.recipes);return i?[((e,t,i)=>{let{group:n,label:o,description:s,recipes:a}=e,{resolveLocalizable:u}=i.recipes;return{groupId:n.groupId,name:void 0===o?n.instanceName:u(o),description:n.description??(void 0===s?null:u(s)),recipes:a.map(n=>((e,t,i,n)=>{let{key:o,item:s}=e,{resolveLocalizable:a}=n.recipes;return{key:o,name:a(s.title),description:void 0===s.description?null:a(s.description),imageUrl:void 0===s.thumbnailUrl?null:a(s.thumbnailUrl),dryRun:()=>t.group.dryRuns?((e,t,i,n)=>{let{updates:o,error:s}=((e,t,{entity:i,state:n},{recipes:o})=>{try{return{updates:r(e,t,i.id,n,o),error:void 0}}catch(e){if("child"===t.target.kind)throw e;return{updates:void 0,error:e instanceof Error?e.message:String(e)}}})(e,t,i,n);return void 0===o?d([{type:"uncaught",entityId:null,message:s}]):l(o,i,n)})(e,t,i,n):null}})(n,e,t,i))}})(i,a,u)]:[]});return{...Object.fromEntries(e(u.manifest,a.entity.type).map(e=>[e.edgeName,()=>n(e,a.entity.id,a.state,u.recipes)?.map(t=>({...t,dryRun:()=>e.dryRuns?(({field:e},{value:t},r,n)=>{let{entity:o}=r,a=Object.entries(Object.entries(n.manifest.writableFields??{}).find(([e])=>e===o.type)?.[1]??{}).find(([t])=>t===e)?.[1];if(void 0===a)throw Error(`The options of "${e}" on "${o.id}" cannot be dry-run: the schema lists them, but the configurator has no writable field "${e}" on ${o.type}. This is a fault in the configurator, not in your request. Tell the user this is not available.`);let u=r.state.entities.find(e=>e.id===o.id);if(!u)throw Error(`The options of "${e}" on "${o.id}" cannot be dry-run: entity "${o.id}" does not exist. It may have been deleted by an earlier operation or field. Query the current entities and use an id they return.`);let c={[a]:t},p=n.validateEntity({...u,...c});return p.success?l([s.DomainEntityModification({entityId:o.id,stateDelta:c,updateTag:i})],r,n):d([{type:"uncaught",entityId:o.id,message:`Writing ${JSON.stringify(t)} to "${e}" would make "${o.id}" an invalid ${o.type}: ${p.errors.join("; ")}. The option comes from the configurator and cannot be corrected from here, so do not write it.`}])})(e,t,a,u):null}))??null])),childRecipes:c("child"),replaceRecipes:c("replace")}};
@@ -1,6 +1,6 @@
1
1
  import { type ExecutionResult } from 'graphql';
2
2
  import { type Localizable } from '@salsita-ai/common/utils';
3
- import { type $DomainEntity, type DomainContextSelectors, type DomainEntity, type DomainServicesSelectors, type DomainState, type SpecSelectors, type StateUpdateEmission } from '#package/domain';
3
+ import { type $DomainEntity, type DomainContextSelectors, type DomainEntity, type DomainServicesSelectors, type DomainState, type SessionAssistantSetup, type SpecSelectors, type StateUpdateEmission } from '#package/domain';
4
4
  /** One single-operation GraphQL document with its own variables, as executed by {@link GraphQLSystem}. */
5
5
  export interface GraphQLOperation {
6
6
  readonly document: string;
@@ -8,6 +8,8 @@ export interface GraphQLOperation {
8
8
  readonly operationName?: string;
9
9
  }
10
10
  export interface GraphQLSystemContext {
11
+ /** The assistant the initialized session runs: the operations are validated and executed against its schema. */
12
+ readonly getAssistantSetup: () => SessionAssistantSetup;
11
13
  readonly specSelectors: SpecSelectors;
12
14
  readonly domainContextSelectors: DomainContextSelectors;
13
15
  readonly domainServicesSelectors: DomainServicesSelectors;
@@ -51,10 +53,12 @@ export declare const localize: (value: unknown, resolveLocalizable: (message: Lo
51
53
  export declare class GraphQLSystem {
52
54
  private readonly _context;
53
55
  /**
54
- * Compiles the manifest's SDL and checks the schema's semantic rules, once per SDL text, so a schema
55
- * that parses but is not valid GraphQL fails every operation with an error result.
56
+ * Compiles the execution schema of the manifest's SDL and checks its semantic rules, once per SDL
57
+ * text, so a schema that parses but is not valid GraphQL fails every operation with an error result.
56
58
  */
57
59
  private readonly _selectSchema;
60
+ /** Parses the manifest's lens definitions, which the builder has validated, once per text. */
61
+ private readonly _selectLenses;
58
62
  /**
59
63
  * Query fields call the root resolvers; entity fields read the stored field or expression their
60
64
  * GraphQL name maps to. Rebuilt only when the manifest's field sources change.
@@ -78,10 +82,16 @@ export declare class GraphQLSystem {
78
82
  private readonly _resolveMutation;
79
83
  private readonly _runMutation;
80
84
  private readonly _setup;
85
+ /**
86
+ * Parses, validates and executes one operation document. Validation adds the rule against
87
+ * introspection to the standard ones: the agent reads the schema from its prompt, and the schema
88
+ * operations run against is the widened execution schema, which is not the one to describe.
89
+ */
90
+ private readonly _run;
81
91
  /**
82
92
  * Runs the operations in order through one working state that starts at `originalState`: a query
83
93
  * reads the current working state, and each mutation field advances it with its own emission.
84
- * Nothing is committed. The first operation that fails stops the list; every later one gets a
94
+ * The lenses an operation spreads are injected into its document first. Nothing is committed. The first operation that fails stops the list; every later one gets a
85
95
  * "not run" error instead.
86
96
  */
87
97
  prepare: (originalState: AnyDomainState, operations: readonly GraphQLOperation[]) => Promise<readonly PreparedOperation[]>;
@@ -1 +1 @@
1
- import{GraphQLError as e,buildSchema as t,defaultFieldResolver as i,getNamedType as o,graphql as a,validateSchema as n}from"graphql";import{assertExistence as r,createSelector as s,isMessageDescriptor as l,isMultilingualString as c}from"@salsita-ai/common/utils";import{DomainEntityIdSchema as h,findAssistantMutation as d}from"#package/domain";import{createEntityMeta as m}from"./entity-meta.js";import{readSideEffects as p}from"./side-effects.js";let f={errors:[new e('No assistant manifest in the application spec. The GraphQL schema is generated from the "assistant" section. Add an "assistant" section to a spec file to expose a schema.')]},u={errors:[new e("The configuration is not loaded yet, so there is no state to query. Run the query again once the configurator has finished loading.")]},y=new RegExp(h.pattern),g=e=>"object"==typeof e&&null!==e&&"type"in e&&"string"==typeof e.type&&"id"in e&&"string"==typeof e.id,v=(e,t)=>"object"==typeof e&&null!==e?Reflect.get(e,t):void 0,S=e=>e instanceof Error?e.message:String(e),x=e=>/[.!?]$/.test(e)?e:`${e}.`,_=e=>"object"==typeof e&&null!==e&&Object.getPrototypeOf(e)===Object.prototype,w=(e,t)=>{let i=_(e)?e._raw:void 0;if(g(i))return i;if(!Array.isArray(e)&&!_(e))return e;if(t.has(e))throw Error("The value contains itself. Return ids or copies of the values instead of objects that reference each other.");let o=new Set([...t,e]);return Array.isArray(e)?e.map(e=>w(e,o)):Object.fromEntries(Object.entries(e).map(([e,t])=>[e,w(t,o)]))};export const localize=(e,t)=>Array.isArray(e)?e.map(e=>localize(e,t)):"string"==typeof e||l(e)||c(e)?t(e):e;let E=t=>new e(`The GraphQL schema generated from the "assistant" manifest is invalid: ${x(t)} Regenerate the application so the schema is rebuilt from the current spec.`),$=e=>(e.errors?.length??0)>0,b=t=>({errors:[new e(`Not run: operation ${t+1} failed, so the operations after it were skipped and no change of the list takes effect. Fix the failing operation and send the whole list again.`)]});export class GraphQLSystem{_context;_selectSchema=s([s.leaf(e=>e)],e=>{try{let i=t(e),o=n(i);return o.length>0?E(o.map(e=>e.message).join(" ")):i}catch(e){return E(S(e))}});_selectFieldResolver=s([s.leaf(e=>e)],t=>(a,n,r,s)=>{if(s.parentType===s.schema.getQueryType())return i(a,n,r,s);if(s.parentType===s.schema.getMutationType())return this._resolveMutation(s.fieldName,String(s.path.key),n,r);if(!g(a))return i(a,n,r,s);if("meta"===s.fieldName){let e;return m({entity:a,state:("object"==typeof(e=v(a,"_state"))&&null!==e&&"entities"in e&&"rootEntityId"in e?e:void 0)??r.state},{manifest:r.manifest,recipes:this._recipeContext(),prepareStateEmission:(e,t,i)=>this._context.domainContextSelectors.getStoreSystem().prepareStateEmission(e,t,i),find$Entity:(e,t)=>this._find$Entity(e,t),validateEntity:e=>this._context.domainContextSelectors.getDomain().validateEntity(e)})}let{source:l,localized:c}=t[s.parentType.name]?.[s.fieldName]??{source:s.fieldName},h=((t,i)=>{try{return v(t,i)}catch(o){throw new e(`Expression "${i}" failed on ${g(t)?t.id:"an entity"}: ${x(S(o))} The expression threw while the query read it; fix the expression or the configuration state it reads.`,{originalError:o instanceof Error?o:void 0})}})(a,l);return c?localize(h,this._context.domainServicesSelectors.getResolveLocalizable()):l.startsWith("$")&&"JSON"===o(s.returnType).name?((t,i,o)=>{try{return w(o,new Set)}catch(o){throw new e(`Expression "${i}" returned a value that is not plain serializable data on ${g(t)?t.id:"an entity"}: ${x(S(o))} A JSON field can only return data that serializes to JSON.`,{originalError:o instanceof Error?o:void 0})}})(a,l,h):h});constructor(e){this._context=e}_get$Entity=(e,t)=>this._context.domainContextSelectors.getDomain().get$Entity(e,t);_find$Entity=(e,t)=>this._context.domainContextSelectors.getDomain().getEntity(e,t)?this._get$Entity(e,t):null;_recipeContext=()=>({componentReader:this._context.domainContextSelectors.getComponentReader(),recipeCooker:this._context.domainContextSelectors.getRecipeCookerSystem(),resolveLocalizable:this._context.domainServicesSelectors.getResolveLocalizable()});_rootValue={root:(e,{state:t})=>this._get$Entity(t.rootEntityId,t),entities:({ids:t},{state:i})=>{if(null==t)return i.entities.map(e=>this._get$Entity(e.id,i));var o=i.rootEntityId;let a=t.filter(e=>!y.test(e));if(a.length>0)throw new e(`${a.map(e=>`"${e}"`).join(", ")} ${1===a.length?"is not an entity id":"are not entity ids"}. Entity ids have the form "<Type>-<number>", e.g. "${o}". Use ids as returned by the "id" field.`);return t.map(e=>y.test(e)?this._find$Entity(e,i):null)},selectedEntity:(e,{state:t})=>this._find$Entity(this._context.domainContextSelectors.getNavigationSystem().getActiveSelectionState(t),t),navigation:(e,{state:t})=>{let i=this._context.domainContextSelectors.getNavigationSystem();return{navigationState:i.getActiveNavigationState(t),viewState:i.getActiveViewState(t),toolState:i.getActiveToolState(t)}}};_resolveType=e=>g(e)?e.type:void 0;initialize=()=>{};_resolveMutation=(t,i,o,a)=>{if(void 0!==a.failedMutationField)throw new e(`Not run: the earlier field "${a.failedMutationField}" of this operation failed, so "${i}" was skipped and no change of the operation takes effect. Fix the failing field and send the operation again.`);try{return this._runMutation(t,o,a)}catch(e){throw a.failedMutationField=i,e}};_runMutation=(t,i,o)=>{let a=d(t,o.manifest);if(!a)throw new e(`The schema declares the mutation "${t}", but the configurator has no implementation for it. Regenerate the application so the schema matches the configurator.`);let n=o.state,r=a.implementation(i,n,{manifest:o.manifest,action:this._context.domainContextSelectors.getActionSystem().createContext(n),resolveLocalizable:this._context.domainServicesSelectors.getResolveLocalizable()});if(r.updates.length>0){let i=this._context.domainContextSelectors.getStoreSystem().prepareStateEmission(r.updates,n,"committed");if(!i.validity.valid)throw new e(`The changes of "${t}" were not applied, because the resulting configuration is invalid: ${(e=>{if("uncaught"===e.severity)return`validating it threw: ${x(S(e.error))}`;let t=[...new Set(e.entityViolations.filter(({violation:t})=>t.severity===e.severity).map(({entityId:e})=>e))];return`it has ${e.severity} violations on ${t.join(", ")}.`})(i.validity)} Change the request so the configuration stays valid.`);o.emissions.push(i),o.state=i.state}return r.readResult({previousState:n,state:o.state})};_setup=()=>{let t=this._context.specSelectors.getAssistant();if(!t)return{ready:!1,result:f};let i=this._selectSchema(t.sdl);return i instanceof e?{ready:!1,result:{errors:[i]}}:{ready:!0,assistant:t,schema:i,fieldResolver:this._selectFieldResolver(t.fields)}};prepare=async(e,t)=>{let i,o=this._setup();if(!o.ready)return t.map(()=>({result:o.result,emissions:[]}));let n={manifest:o.assistant,state:e,emissions:[],failedMutationField:void 0},r=[];for(let[e,s]of t.entries())if(void 0===i){let t=n.emissions.length;n.failedMutationField=void 0;let l=await a({schema:o.schema,source:s.document,rootValue:this._rootValue,contextValue:n,variableValues:s.variables,operationName:s.operationName,fieldResolver:o.fieldResolver,typeResolver:this._resolveType});r.push({result:l,emissions:n.emissions.slice(t)}),$(l)&&(i=e)}else r.push({result:b(i),emissions:[]});return r};readSideEffects=e=>{let t=this._context.domainServicesSelectors.getResolveLocalizable();return e.flatMap(({emissions:e})=>e.flatMap(e=>p(e.updates,t)))};_prepareAndCommit=async e=>{let t,i,o,a=this._context.domainContextSelectors.getStoreSystem(),n=await this.prepare(a.stateSlices.committed.value.state,e),s=n.map(({result:e})=>e),l=this.readSideEffects(n),c=n.flatMap(e=>e.emissions);return s.some($)||0===c.length?{results:s,sideEffects:l,outcome:"none"}:{results:s,sideEffects:l,outcome:a.commitPrepared((t=r(c[0]),i=r(c[c.length-1]),o=c.some(e=>void 0!==e.transformationLog),{kind:"committed",previousState:t.previousState,state:i.state,updates:c.flatMap(e=>e.updates),validity:i.validity,transformationLog:o?c.flatMap(e=>e.transformationLog??[]):void 0}))}};execute=async e=>{if(!this._context.domainContextSelectors.getStoreSystem().isInitialized)return{results:e.map(()=>u),committed:!1,sideEffects:[]};let t=await this._prepareAndCommit(e),{results:i,sideEffects:o,outcome:a}="conflict"===t.outcome?await this._prepareAndCommit(e):t;return"committed"===a?{results:i,committed:!0,sideEffects:o}:"held"===a?{results:i,committed:!1,message:"The changes were not committed yet: the application held them, usually to ask the user for approval. They may still be applied once the user approves, and the next turn shows whether they were. Do not send the operations again.",sideEffects:o}:"conflict"===a?{results:i,committed:!1,message:"The changes were not committed, because the configuration changed while they were being applied. The results describe a state that was discarded. Query the current configuration and send the operations again if they still make sense.",sideEffects:o}:{results:i,committed:!1,sideEffects:o}}}
1
+ import{GraphQLError as e,NoSchemaIntrospectionCustomRule as t,defaultFieldResolver as i,execute as o,getNamedType as n,parse as r,specifiedRules as a,validate as s,validateSchema as l}from"graphql";import{assertExistence as c,createSelector as d,isMessageDescriptor as h,isMultilingualString as u}from"@salsita-ai/common/utils";import{DomainEntityIdSchema as m,createAssistantExecutionSchema as f,findAssistantMutation as p}from"#package/domain";import{createEntityMeta as g}from"./entity-meta.js";import{injectAssistantLenses as y}from"./inject-assistant-lenses.js";import{readSideEffects as v}from"./side-effects.js";let S={errors:[new e("The configurator does not provide this request. This is a fault in the configurator, not in your request. Tell the user this is not available.")]},_={errors:[new e("The configuration is not loaded yet, so there is no state to query. Run the query again once the configurator has finished loading.")]},x=new RegExp(m.pattern),w=[...a,t],E=e=>"object"==typeof e&&null!==e&&"type"in e&&"string"==typeof e.type&&"id"in e&&"string"==typeof e.id,$=(e,t)=>"object"==typeof e&&null!==e?Reflect.get(e,t):void 0,b=e=>e instanceof Error?e.message:String(e),T=e=>/[.!?]$/.test(e)?e:`${e}.`,C=e=>"object"==typeof e&&null!==e&&Object.getPrototypeOf(e)===Object.prototype,R=(e,t)=>{let i=C(e)?e._raw:void 0;if(E(i))return i;if(!Array.isArray(e)&&!C(e))return e;if(t.has(e))throw Error("The value contains itself.");let o=new Set([...t,e]);return Array.isArray(e)?e.map(e=>R(e,o)):Object.fromEntries(Object.entries(e).map(([e,t])=>[e,R(t,o)]))};export const localize=(e,t)=>Array.isArray(e)?e.map(e=>localize(e,t)):"string"==typeof e||h(e)||u(e)?t(e):e;let j=t=>new e(`The configurator cannot handle this request: ${T(t)} This is a fault in the configurator, not in your request. Tell the user this is not available.`),A=e=>(e.errors?.length??0)>0,M=t=>({errors:[new e(`Not run: operation ${t+1} failed, so the operations after it were skipped and no change of the list takes effect. Fix the failing operation and send the whole list again.`)]});export class GraphQLSystem{_context;_selectSchema=d([d.leaf(e=>e)],e=>{try{let t=f(e),i=l(t);return i.length>0?j(i.map(e=>e.message).join(" ")):t}catch(e){return j(b(e))}});_selectLenses=d([d.leaf(e=>e)],e=>r(e));_selectFieldResolver=d([d.leaf(e=>e)],t=>(o,r,a,s)=>{if(s.parentType===s.schema.getQueryType())return i(o,r,a,s);if(s.parentType===s.schema.getMutationType())return this._resolveMutation(s.fieldName,String(s.path.key),r,a);if(!E(o))return i(o,r,a,s);if("meta"===s.fieldName){let e;return g({entity:o,state:("object"==typeof(e=$(o,"_state"))&&null!==e&&"entities"in e&&"rootEntityId"in e?e:void 0)??a.state},{manifest:a.manifest,recipes:this._recipeContext(),prepareStateEmission:(e,t,i)=>this._context.domainContextSelectors.getStoreSystem().prepareStateEmission(e,t,i),find$Entity:(e,t)=>this._find$Entity(e,t),validateEntity:e=>this._context.domainContextSelectors.getDomain().validateEntity(e)})}let{source:l,localized:c}=t[s.parentType.name]?.[s.fieldName]??{source:s.fieldName},d=((t,i)=>{try{return $(t,i)}catch(o){throw new e(`Expression "${i}" failed on ${E(t)?t.id:"an entity"}: ${T(b(o))} This is a fault in the configurator, not in your request. Tell the user this is not available.`,{originalError:o instanceof Error?o:void 0})}})(o,l);return c?localize(d,this._context.domainServicesSelectors.getResolveLocalizable()):l.startsWith("$")&&"JSON"===n(s.returnType).name?((t,i,o)=>{try{return R(o,new Set)}catch(o){throw new e(`Expression "${i}" returned a value that is not plain serializable data on ${E(t)?t.id:"an entity"}: ${T(b(o))} This is a fault in the configurator, not in your request. Tell the user this is not available.`,{originalError:o instanceof Error?o:void 0})}})(o,l,d):d});constructor(e){this._context=e}_get$Entity=(e,t)=>this._context.domainContextSelectors.getDomain().get$Entity(e,t);_find$Entity=(e,t)=>this._context.domainContextSelectors.getDomain().getEntity(e,t)?this._get$Entity(e,t):null;_recipeContext=()=>({componentReader:this._context.domainContextSelectors.getComponentReader(),recipeCooker:this._context.domainContextSelectors.getRecipeCookerSystem(),resolveLocalizable:this._context.domainServicesSelectors.getResolveLocalizable()});_rootValue={root:(e,{state:t})=>this._get$Entity(t.rootEntityId,t),entities:({ids:t},{state:i})=>{if(null==t)return i.entities.map(e=>this._get$Entity(e.id,i));var o=i.rootEntityId;let n=t.filter(e=>!x.test(e));if(n.length>0)throw new e(`${n.map(e=>`"${e}"`).join(", ")} ${1===n.length?"is not an entity id":"are not entity ids"}. Entity ids have the form "<Type>-<number>", e.g. "${o}". Use ids as returned by the "id" field.`);return t.map(e=>x.test(e)?this._find$Entity(e,i):null)},selectedEntity:(e,{state:t})=>this._find$Entity(this._context.domainContextSelectors.getNavigationSystem().getActiveSelectionState(t),t),navigation:(e,{state:t})=>{let i=this._context.domainContextSelectors.getNavigationSystem();return{navigationState:i.getActiveNavigationState(t),viewState:i.getActiveViewState(t),toolState:i.getActiveToolState(t)}}};_resolveType=e=>E(e)?e.type:void 0;initialize=()=>{};_resolveMutation=(t,i,o,n)=>{if(void 0!==n.failedMutationField)throw new e(`Not run: the earlier field "${n.failedMutationField}" of this operation failed, so "${i}" was skipped and no change of the operation takes effect. Fix the failing field and send the operation again.`);try{return this._runMutation(t,o,n)}catch(e){throw n.failedMutationField=i,e}};_runMutation=(t,i,o)=>{let n=p(t,o.manifest);if(!n)throw new e(`The schema declares the mutation "${t}", but the configurator has no implementation for it. This is a fault in the configurator, not in your request. Tell the user this is not available.`);let r=o.state,a=n.implementation(i,r,{manifest:o.manifest,action:this._context.domainContextSelectors.getActionSystem().createContext(r),resolveLocalizable:this._context.domainServicesSelectors.getResolveLocalizable()});if(a.updates.length>0){let i=this._context.domainContextSelectors.getStoreSystem().prepareStateEmission(a.updates,r,"committed");if(!i.validity.valid)throw new e(`The changes of "${t}" were not applied, because the resulting configuration is invalid: ${(e=>{if("uncaught"===e.severity)return`validating it threw: ${T(b(e.error))}`;let t=[...new Set(e.entityViolations.filter(({violation:t})=>t.severity===e.severity).map(({entityId:e})=>e))];return`it has ${e.severity} violations on ${t.join(", ")}.`})(i.validity)} Change the request so the configuration stays valid.`);o.emissions.push(i),o.state=i.state}return a.readResult({previousState:r,state:o.state})};_setup=()=>{let{manifest:t,error:i}=this._context.getAssistantSetup();if(i)return{ready:!1,result:{errors:[new e(i.message,{originalError:i})]}};if(!t)return{ready:!1,result:S};let o=this._selectSchema(t.sdl);return o instanceof e?{ready:!1,result:{errors:[o]}}:{ready:!0,assistant:t,schema:o,lenses:t.lenses?.definitions?this._selectLenses(t.lenses.definitions):void 0,fieldResolver:this._selectFieldResolver(t.fields)}};_run=(t,i,n,a)=>{let l;try{l=r(t)}catch(t){return{errors:[t instanceof e?t:new e(b(t))]}}let c=s(n.schema,l,w);return c.length>0?{errors:c}:o({schema:n.schema,document:l,rootValue:this._rootValue,contextValue:a,variableValues:i.variables,operationName:i.operationName,fieldResolver:n.fieldResolver,typeResolver:this._resolveType})};prepare=async(t,i)=>{let o,n=this._setup();if(!n.ready)return i.map(()=>({result:n.result,emissions:[]}));let r={manifest:n.assistant,state:t,emissions:[],failedMutationField:void 0},a=[];for(let[t,s]of i.entries())if(void 0===o){let i=r.emissions.length;r.failedMutationField=void 0;let l=n.lenses?y(s.document,n.lenses):s.document,c=l instanceof e?{errors:[l]}:await this._run(l,s,n,r);a.push({result:c,emissions:r.emissions.slice(i)}),A(c)&&(o=t)}else a.push({result:M(o),emissions:[]});return a};readSideEffects=e=>{let t=this._context.domainServicesSelectors.getResolveLocalizable();return e.flatMap(({emissions:e})=>e.flatMap(e=>v(e.updates,t)))};_prepareAndCommit=async e=>{let t,i,o,n=this._context.domainContextSelectors.getStoreSystem(),r=await this.prepare(n.stateSlices.committed.value.state,e),a=r.map(({result:e})=>e),s=this.readSideEffects(r),l=r.flatMap(e=>e.emissions);return a.some(A)||0===l.length?{results:a,sideEffects:s,outcome:"none"}:{results:a,sideEffects:s,outcome:n.commitPrepared((t=c(l[0]),i=c(l[l.length-1]),o=l.some(e=>void 0!==e.transformationLog),{kind:"committed",previousState:t.previousState,state:i.state,updates:l.flatMap(e=>e.updates),validity:i.validity,transformationLog:o?l.flatMap(e=>e.transformationLog??[]):void 0}))}};execute=async e=>{if(!this._context.domainContextSelectors.getStoreSystem().isInitialized)return{results:e.map(()=>_),committed:!1,sideEffects:[]};let t=await this._prepareAndCommit(e),{results:i,sideEffects:o,outcome:n}="conflict"===t.outcome?await this._prepareAndCommit(e):t;return"committed"===n?{results:i,committed:!0,sideEffects:o}:"held"===n?{results:i,committed:!1,message:"The changes wait for the user's approval and are not applied yet. Do not send them again; the next `[changes]` block lists them once approved.",sideEffects:o}:"conflict"===n?{results:i,committed:!1,message:"The changes were not committed, because the configuration changed while they were being applied. The results describe a state that was discarded. Query the current configuration and send the operations again if they still make sense.",sideEffects:o}:{results:i,committed:!1,sideEffects:o}}}
@@ -0,0 +1,11 @@
1
+ import { type DocumentNode, GraphQLError } from 'graphql';
2
+ /**
3
+ * Makes the lenses an operation document spreads available to it: appends the definition of every
4
+ * lens the document spreads, with the copies that definition spreads in turn, taken from the
5
+ * manifest's lens `definitions`. Appending keeps the positions GraphQL reports for the caller's own
6
+ * text. A document that defines a fragment under the name of a lens, or of a copy of one, is
7
+ * rejected, since the caller would silently read its own selection instead of the lens. A document
8
+ * that does not parse is returned as it is, so GraphQL reports the syntax error; a spread that names
9
+ * no lens is left for GraphQL to report as an unknown fragment.
10
+ */
11
+ export declare const injectAssistantLenses: (document: string, definitions: DocumentNode) => string | GraphQLError;
@@ -0,0 +1 @@
1
+ import{GraphQLError as e,Kind as n,parse as t,print as a,visit as i}from"graphql";let r=e=>{let n=[];return i(e,{FragmentSpread:e=>{n.push(e.name.value)}}),n};export const injectAssistantLenses=(i,o)=>{let l,s=new Map;for(let e of o.definitions)e.kind===n.FRAGMENT_DEFINITION&&s.set(e.name.value,e);try{l=t(i)}catch{return i}for(let t of l.definitions)if(t.kind===n.FRAGMENT_DEFINITION&&s.has(t.name.value)){let n=t.name.value.split("__")[0];return new e(`A built-in fragment named "${n}" already exists, so "${t.name.value}" cannot be defined. Remove the definition and spread "...${n}", or give your fragment another name.`)}let m=new Map,u=[...r(l)];for(;u.length>0;){let e=u.pop(),n=void 0===e?void 0:s.get(e);n&&!m.has(n.name.value)&&(m.set(n.name.value,n),u.push(...r(n)))}return 0===m.size?i:[i,...[...m.values()].map(a)].join("\n\n")};
@@ -1,5 +1,5 @@
1
1
  export { AnimationSystem, type AnimationSystemContext } from './animation-system.js';
2
- export { type AssistantChatSnapshot, type AssistantClientTool, type AssistantPanelSnapshot, AssistantSystem, type AssistantSystemContext, } from './assistant-system/assistant-system.js';
2
+ export { type AssistantChatSnapshot, type AssistantEarlierThreadSnapshot, type AssistantClientTool, type AssistantPanelSnapshot, AssistantSystem, type AssistantSystemContext, } from './assistant-system/assistant-system.js';
3
3
  export { CameraControlSystem, CameraControlType } from './camera-control-system/camera-control-system.js';
4
4
  export { type AnyCameraSystem, CameraSystem, type CameraSystemContext } from './camera-control-system/camera-system.js';
5
5
  export { createCameraControls } from './camera-control-system/create-camera-controls.js';
@@ -36,7 +36,7 @@ export declare class LayoutSystem<ENTITIES extends DomainEntity<string>> {
36
36
  splitSidebar: boolean;
37
37
  showSelectionBackButton: boolean;
38
38
  shareDisabled: boolean;
39
- availableLocales: string[];
39
+ availableLocales: readonly string[];
40
40
  indicatorSwitch: boolean;
41
41
  };
42
42
  getSidebarSummaryPage: (state: DomainState<ENTITIES>) => {
@@ -71,5 +71,5 @@ export declare class LayoutSystem<ENTITIES extends DomainEntity<string>> {
71
71
  hasSplitSidebar: boolean;
72
72
  };
73
73
  getToolbarState: (state: DomainState<ENTITIES>) => ToolbarComponentState;
74
- getNavigationSteps: (state: DomainState<ENTITIES>) => import("#package/domain").NavigationStep[];
74
+ getNavigationSteps: (state: DomainState<ENTITIES>) => readonly import("#package/domain").NavigationStep[];
75
75
  }
@@ -1 +1 @@
1
- import{P as t,match as e}from"ts-pattern";import{SystemState as o,applicationConfigComponent as n,customSummaryPageComponent as a,entityHeaderComponent as i,navigationStepsComponent as r,propertyPageComponent as s,sidebarTabsComponent as l,simpleSummaryComponent as d,toolbarComponent as c}from"#package/domain";import{layoutStateComponent as g}from"./layout-state.js";import{toolbarHelpElementName as u}from"./toolbar-help-element.js";export class LayoutSystem{_context;_toolbarCache=new WeakMap;state;constructor(t){this._context=t,this.state=new o({...this._context,selectors:this._context.domainContextSelectors,componentType:g,getInitialState:()=>({propertyPageStates:{}})})}get _toolbarHelpExists(){return void 0!==this._context.specSelectors.getElementSlots().layoutElements[u]}get _hasAssistant(){return void 0!==this._context.specSelectors.getAssistant()}initialize=()=>{this.state.initialize()};getCleanUpPropertyPageStateUpdates=(t,e)=>this.state.getUpdates(e=>{if(!e.propertyPageStates[t])return null;let o={...e.propertyPageStates};return delete o[t],{...e,propertyPageStates:o}},e);getLayoutConfig=t=>{let e=this._context.domainContextSelectors.getComponentReader().readFirstRootComponent({componentTypes:[n]},t),o=e?.state.shareDisabled??!1,a=o||(e?.state.shareOwnerLinkDisabled??!1),i=o||(e?.state.shareReadRevisionLinkDisabled??!1);return{layout:e?.state.layout??"universal",ignoreSelectionInSidebar:e?.state.ignoreSelectionInSidebar??!1,miniSidebar:e?.state.miniSidebar??!1,splitSidebar:e?.state.splitSidebar??!1,showSelectionBackButton:e?.state.showSelectionBackButton??!0,shareDisabled:a&&i,availableLocales:e?.state.availableLocales??["en"],indicatorSwitch:e?.state.indicatorSwitch??!0}};getSidebarSummaryPage=t=>{let e=this._context.domainContextSelectors.getNavigationSystem().getActiveNavigationState(t),o=this._context.domainContextSelectors.getComponentReader().readFirstRootComponent({componentTypes:[a,d]},t),n=e===o?.state.summaryNavigationState,i=o?.state.summaryNavigationState;return{page:o,isSummaryActive:n,summaryNavigationState:i}};getEnterSidebarSummaryUpdates=t=>{let{summaryNavigationState:e}=this.getSidebarSummaryPage(t);return e?[this._context.domainContextSelectors.getNavigationSystem().getPushNavigationUpdate(e,t)]:[]};getLeaveSidebarSummaryUpdates=t=>{let e=this._context.domainContextSelectors.getNavigationSystem().getPopNavigationUpdate(t);if(e)return[e];let o=this._context.domainContextSelectors.getNavigationStates().at(0);return o?(this._context.domainServicesSelectors.getLogger().error("There is no navigation state to pop, falling back to the initial navigation state. Check whether the history stack is not broken by some custom navigation logic."),[this._context.domainContextSelectors.getNavigationSystem().getNavigationUpdate(o)]):(this._context.domainServicesSelectors.getLogger().error("There is no navigation state to pop and no initial navigation state to fallback to, this should not happen"),[])};getPushSidebarStackPageUpdates=(t,e,o,n)=>this.state.getUpdates(n=>{let a=n.propertyPageStates[t]??{customState:{},stackPages:[]};return{...n,propertyPageStates:{...n.propertyPageStates,[t]:{...a,stackPages:[...a.stackPages,{props:o,component:e}]}}}},n);getPopSidebarStackPageUpdates=(t,e)=>this.state.getUpdates(e=>{let o=e.propertyPageStates[t]??{customState:{},stackPages:[]};return{...e,propertyPageStates:{...e.propertyPageStates,[t]:{...o,stackPages:o.stackPages.slice(0,-1)}}}},e);getSidebarBackUpdates=t=>{let e=this._context.domainContextSelectors.getNavigationSystem().getHasStackToPop(t),o=this._context.domainContextSelectors.getNavigationSystem().getIsRootSelected(t),{renderedStackedPage:n,summaryPage:a,activePropertyPageId:i}=this.getSidebarContent(t);if(a)return this.getLeaveSidebarSummaryUpdates(t);if(n&&i)return this.getPopSidebarStackPageUpdates(i,t);if(e){let e=this._context.domainContextSelectors.getNavigationSystem().getPopNavigationUpdate(t);return e?[e]:[]}return o?[]:[this._context.domainContextSelectors.getNavigationSystem().getDeselectUpdate()]};getSidebarContent=t=>{let e=this._context.domainContextSelectors.getNavigationSystem().getActiveSelectionState(t),o=this.state.get(t),n=this.getLayoutConfig(t),a=this._context.domainContextSelectors.getComponentReader().readManyComponents({componentTypes:[l],entityIds:[e]},t).some(t=>t.state.tabs.length>0),r=n.miniSidebar&&!a;r&&a&&this._context.domainServicesSelectors.getLogger().warn("Mini sidebar is not active because the layout contains tabs. Only layouts without tabs can have mini sidebar.");let d=this._context.domainContextSelectors.getComponentReader().readManyComponents({componentTypes:[s]},t),{isSummaryActive:c,page:g}=this.getSidebarSummaryPage(t),u=this._context.domainContextSelectors.getComponentReader().readManyComponents({componentTypes:[i]},t),p=this._context.domainContextSelectors.getCompositionProjections().getTree(t).map.get(e);if(!p)throw Error(`Selected entity ${e} not found in composition tree`);let m=this._context.domainContextSelectors.getCompositionProjections().getTree(t).map.get(t.rootEntityId);if(!m)throw Error(`Root entity ${t.rootEntityId} not found in composition tree`);let h=(n.ignoreSelectionInSidebar?[m]:[p,...p.ancestors()]).map(t=>{let e=n.ignoreSelectionInSidebar?d:d.filter(e=>e.componentInstance.entityId===t.id),o=u.filter(e=>e.componentInstance.entityId===t.id);return{id:t.id,propertyPages:e,header:o[0]??null}}),S=h[0]?.id,b=(S?o.propertyPageStates[S]?.stackPages??[]:[]).at(-1)??null,k=this._context.domainContextSelectors.getNavigationSystem().getHasStackToPop(t),x=this._context.domainContextSelectors.getNavigationSystem().getIsRootSelected(t),y=c&&k||k||!!b||!x&&n.showSelectionBackButton&&!n.ignoreSelectionInSidebar;return c?{summaryPage:g,propertyPages:[],isBackAvailable:y,hasMiniSidebar:r,hasSplitSidebar:n.splitSidebar}:{summaryPage:null,propertyPages:h,renderedStackedPage:b,activePropertyPageId:S,isBackAvailable:y,hasMiniSidebar:r,hasSplitSidebar:n.splitSidebar}};getToolbarState=o=>{let n=this._toolbarHelpExists,a=this._hasAssistant,i=this._toolbarCache.get(o);if(i&&i.toolbarHelpExists===n&&i.hasAssistant===a)return i.result;let r=this._context.domainContextSelectors.getExpressionContext(),s=this._context.domainContextSelectors.getNavigationSystem().getActiveFullscreenState(o),l="read"===r.mode,d=this._context.domainContextSelectors.getComponentReader().readFirstRootComponent({componentTypes:[c]},o),g=this._context.domainContextSelectors.getDimensionSystem().getDimensionConfig(o),u=this.getLayoutConfig(o),p="read"===this._context.domainContextSelectors.getExpressionContext().mode,m=u.availableLocales.length>1,h=!p&&!u.shareDisabled,S=u.indicatorSwitch,b=g.availableDimensions.length>1||S,k=a?[{kind:"toolbarButtonGroup",children:[{kind:"assistantToolbarButton"}]}]:[],x=e(d).returnType().with(t.nonNullable,t=>t.state).with(t.nullish,()=>e([s,l]).returnType().with([!1,!1],()=>({desktop:[{kind:"toolbarButtonGroup",children:[{kind:"enterFullscreenToolbarButton"}]},{kind:"toolbarButtonGroup",children:[{kind:"resetCameraToolbarButton"}]},...m?[{kind:"toolbarButtonGroup",children:[{kind:"languageToolbarButton"}]}]:[],...h||b?[{kind:"toolbarButtonGroup",children:[...h?[{kind:"shareToolbarButton"}]:[],...b?[{kind:"measurementsToolbarButton"}]:[],...n?[{kind:"helpToolbarButton"}]:[]]}]:[],{kind:"toolbarButtonGroup",children:[{kind:"undoToolbarButton"},{kind:"redoToolbarButton"}]},...k],mobile:[{kind:"toolbarButtonGroup",children:[{kind:"undoToolbarButton"},{kind:"redoToolbarButton"}]},{kind:"toolbarButtonGroup",children:[{kind:"resetCameraToolbarButton"}]},{kind:"toolbarButtonGroup",children:[{kind:"enterFullscreenToolbarButton"}]},...k],mobileMenu:[...h?[{kind:"shareMenuAction"}]:[],...b?[{kind:"measurementsMenuAction"}]:[],...m?[{kind:"languageMenuAction"}]:[],...n?[{kind:"helpMenuAction"}]:[]]})).with([!0,!1],()=>({desktop:[{kind:"toolbarButtonGroup",children:[{kind:"exitFullscreenToolbarButton"}]}],mobile:[{kind:"toolbarButtonGroup",children:[{kind:"exitFullscreenToolbarButton"}]}],mobileMenu:[]})).with([!1,!0],()=>({desktop:[{kind:"toolbarButtonGroup",children:[{kind:"enterFullscreenToolbarButton"}]},{kind:"toolbarButtonGroup",children:[{kind:"resetCameraToolbarButton"}]},...m?[{kind:"toolbarButtonGroup",children:[{kind:"languageToolbarButton"}]}]:[],...b?[{kind:"toolbarButtonGroup",children:[...b?[{kind:"measurementsToolbarButton"}]:[]]}]:[],...n?[{kind:"helpToolbarButton"}]:[],...k],mobile:[{kind:"toolbarButtonGroup",children:[{kind:"resetCameraToolbarButton"}]},{kind:"toolbarButtonGroup",children:[{kind:"enterFullscreenToolbarButton"}]},...k],mobileMenu:[...b?[{kind:"measurementsMenuAction"}]:[],...m?[{kind:"languageMenuAction"}]:[],...n?[{kind:"helpMenuAction"}]:[]]})).with([!0,!0],()=>({desktop:[{kind:"toolbarButtonGroup",children:[{kind:"exitFullscreenToolbarButton"}]}],mobile:[{kind:"toolbarButtonGroup",children:[{kind:"exitFullscreenToolbarButton"}]}],mobileMenu:[]})).exhaustive()).exhaustive();return this._toolbarCache.set(o,{toolbarHelpExists:n,hasAssistant:a,result:x}),x};getNavigationSteps=t=>{let e=this._context.domainContextSelectors.getComponentReader().readFirstRootComponent({componentTypes:[r]},t);return e?.state.steps??[]}}
1
+ import{P as t,match as e}from"ts-pattern";import{SystemState as o,applicationConfigComponent as n,customSummaryPageComponent as a,entityHeaderComponent as i,navigationStepsComponent as r,propertyPageComponent as s,sidebarTabsComponent as l,simpleSummaryComponent as d,toolbarComponent as c}from"#package/domain";import{layoutStateComponent as g}from"./layout-state.js";import{toolbarHelpElementName as u}from"./toolbar-help-element.js";export class LayoutSystem{_context;_toolbarCache=new WeakMap;state;constructor(t){this._context=t,this.state=new o({...this._context,selectors:this._context.domainContextSelectors,componentType:g,getInitialState:()=>({propertyPageStates:{}})})}get _toolbarHelpExists(){return void 0!==this._context.specSelectors.getElementSlots().layoutElements[u]}get _hasAssistant(){return null!=this._context.specSelectors.getAssistant()}initialize=()=>{this.state.initialize()};getCleanUpPropertyPageStateUpdates=(t,e)=>this.state.getUpdates(e=>{if(!e.propertyPageStates[t])return null;let o={...e.propertyPageStates};return delete o[t],{...e,propertyPageStates:o}},e);getLayoutConfig=t=>{let e=this._context.domainContextSelectors.getComponentReader().readFirstRootComponent({componentTypes:[n]},t),o=e?.state.shareDisabled??!1,a=o||(e?.state.shareOwnerLinkDisabled??!1),i=o||(e?.state.shareReadRevisionLinkDisabled??!1);return{layout:e?.state.layout??"universal",ignoreSelectionInSidebar:e?.state.ignoreSelectionInSidebar??!1,miniSidebar:e?.state.miniSidebar??!1,splitSidebar:e?.state.splitSidebar??!1,showSelectionBackButton:e?.state.showSelectionBackButton??!0,shareDisabled:a&&i,availableLocales:e?.state.availableLocales??["en"],indicatorSwitch:e?.state.indicatorSwitch??!0}};getSidebarSummaryPage=t=>{let e=this._context.domainContextSelectors.getNavigationSystem().getActiveNavigationState(t),o=this._context.domainContextSelectors.getComponentReader().readFirstRootComponent({componentTypes:[a,d]},t),n=e===o?.state.summaryNavigationState,i=o?.state.summaryNavigationState;return{page:o,isSummaryActive:n,summaryNavigationState:i}};getEnterSidebarSummaryUpdates=t=>{let{summaryNavigationState:e}=this.getSidebarSummaryPage(t);return e?[this._context.domainContextSelectors.getNavigationSystem().getPushNavigationUpdate(e,t)]:[]};getLeaveSidebarSummaryUpdates=t=>{let e=this._context.domainContextSelectors.getNavigationSystem().getPopNavigationUpdate(t);if(e)return[e];let o=this._context.domainContextSelectors.getNavigationStates().at(0);return o?(this._context.domainServicesSelectors.getLogger().error("There is no navigation state to pop, falling back to the initial navigation state. Check whether the history stack is not broken by some custom navigation logic."),[this._context.domainContextSelectors.getNavigationSystem().getNavigationUpdate(o)]):(this._context.domainServicesSelectors.getLogger().error("There is no navigation state to pop and no initial navigation state to fallback to, this should not happen"),[])};getPushSidebarStackPageUpdates=(t,e,o,n)=>this.state.getUpdates(n=>{let a=n.propertyPageStates[t]??{customState:{},stackPages:[]};return{...n,propertyPageStates:{...n.propertyPageStates,[t]:{...a,stackPages:[...a.stackPages,{props:o,component:e}]}}}},n);getPopSidebarStackPageUpdates=(t,e)=>this.state.getUpdates(e=>{let o=e.propertyPageStates[t]??{customState:{},stackPages:[]};return{...e,propertyPageStates:{...e.propertyPageStates,[t]:{...o,stackPages:o.stackPages.slice(0,-1)}}}},e);getSidebarBackUpdates=t=>{let e=this._context.domainContextSelectors.getNavigationSystem().getHasStackToPop(t),o=this._context.domainContextSelectors.getNavigationSystem().getIsRootSelected(t),{renderedStackedPage:n,summaryPage:a,activePropertyPageId:i}=this.getSidebarContent(t);if(a)return this.getLeaveSidebarSummaryUpdates(t);if(n&&i)return this.getPopSidebarStackPageUpdates(i,t);if(e){let e=this._context.domainContextSelectors.getNavigationSystem().getPopNavigationUpdate(t);return e?[e]:[]}return o?[]:[this._context.domainContextSelectors.getNavigationSystem().getDeselectUpdate()]};getSidebarContent=t=>{let e=this._context.domainContextSelectors.getNavigationSystem().getActiveSelectionState(t),o=this.state.get(t),n=this.getLayoutConfig(t),a=this._context.domainContextSelectors.getComponentReader().readManyComponents({componentTypes:[l],entityIds:[e]},t).some(t=>t.state.tabs.length>0),r=n.miniSidebar&&!a;r&&a&&this._context.domainServicesSelectors.getLogger().warn("Mini sidebar is not active because the layout contains tabs. Only layouts without tabs can have mini sidebar.");let d=this._context.domainContextSelectors.getComponentReader().readManyComponents({componentTypes:[s]},t),{isSummaryActive:c,page:g}=this.getSidebarSummaryPage(t),u=this._context.domainContextSelectors.getComponentReader().readManyComponents({componentTypes:[i]},t),p=this._context.domainContextSelectors.getCompositionProjections().getTree(t).map.get(e);if(!p)throw Error(`Selected entity ${e} not found in composition tree`);let m=this._context.domainContextSelectors.getCompositionProjections().getTree(t).map.get(t.rootEntityId);if(!m)throw Error(`Root entity ${t.rootEntityId} not found in composition tree`);let h=(n.ignoreSelectionInSidebar?[m]:[p,...p.ancestors()]).map(t=>{let e=n.ignoreSelectionInSidebar?d:d.filter(e=>e.componentInstance.entityId===t.id),o=u.filter(e=>e.componentInstance.entityId===t.id);return{id:t.id,propertyPages:e,header:o[0]??null}}),S=h[0]?.id,b=(S?o.propertyPageStates[S]?.stackPages??[]:[]).at(-1)??null,k=this._context.domainContextSelectors.getNavigationSystem().getHasStackToPop(t),x=this._context.domainContextSelectors.getNavigationSystem().getIsRootSelected(t),y=c&&k||k||!!b||!x&&n.showSelectionBackButton&&!n.ignoreSelectionInSidebar;return c?{summaryPage:g,propertyPages:[],isBackAvailable:y,hasMiniSidebar:r,hasSplitSidebar:n.splitSidebar}:{summaryPage:null,propertyPages:h,renderedStackedPage:b,activePropertyPageId:S,isBackAvailable:y,hasMiniSidebar:r,hasSplitSidebar:n.splitSidebar}};getToolbarState=o=>{let n=this._toolbarHelpExists,a=this._hasAssistant,i=this._toolbarCache.get(o);if(i&&i.toolbarHelpExists===n&&i.hasAssistant===a)return i.result;let r=this._context.domainContextSelectors.getExpressionContext(),s=this._context.domainContextSelectors.getNavigationSystem().getActiveFullscreenState(o),l="read"===r.mode,d=this._context.domainContextSelectors.getComponentReader().readFirstRootComponent({componentTypes:[c]},o),g=this._context.domainContextSelectors.getDimensionSystem().getDimensionConfig(o),u=this.getLayoutConfig(o),p="read"===this._context.domainContextSelectors.getExpressionContext().mode,m=u.availableLocales.length>1,h=!p&&!u.shareDisabled,S=u.indicatorSwitch,b=g.availableDimensions.length>1||S,k=a?[{kind:"toolbarButtonGroup",children:[{kind:"assistantToolbarButton"}]}]:[],x=e(d).returnType().with(t.nonNullable,t=>t.state).with(t.nullish,()=>e([s,l]).returnType().with([!1,!1],()=>({desktop:[{kind:"toolbarButtonGroup",children:[{kind:"enterFullscreenToolbarButton"}]},{kind:"toolbarButtonGroup",children:[{kind:"resetCameraToolbarButton"}]},...m?[{kind:"toolbarButtonGroup",children:[{kind:"languageToolbarButton"}]}]:[],...h||b?[{kind:"toolbarButtonGroup",children:[...h?[{kind:"shareToolbarButton"}]:[],...b?[{kind:"measurementsToolbarButton"}]:[],...n?[{kind:"helpToolbarButton"}]:[]]}]:[],{kind:"toolbarButtonGroup",children:[{kind:"undoToolbarButton"},{kind:"redoToolbarButton"}]},...k],mobile:[{kind:"toolbarButtonGroup",children:[{kind:"undoToolbarButton"},{kind:"redoToolbarButton"}]},{kind:"toolbarButtonGroup",children:[{kind:"resetCameraToolbarButton"}]},{kind:"toolbarButtonGroup",children:[{kind:"enterFullscreenToolbarButton"}]},...k],mobileMenu:[...h?[{kind:"shareMenuAction"}]:[],...b?[{kind:"measurementsMenuAction"}]:[],...m?[{kind:"languageMenuAction"}]:[],...n?[{kind:"helpMenuAction"}]:[]]})).with([!0,!1],()=>({desktop:[{kind:"toolbarButtonGroup",children:[{kind:"exitFullscreenToolbarButton"}]}],mobile:[{kind:"toolbarButtonGroup",children:[{kind:"exitFullscreenToolbarButton"}]}],mobileMenu:[]})).with([!1,!0],()=>({desktop:[{kind:"toolbarButtonGroup",children:[{kind:"enterFullscreenToolbarButton"}]},{kind:"toolbarButtonGroup",children:[{kind:"resetCameraToolbarButton"}]},...m?[{kind:"toolbarButtonGroup",children:[{kind:"languageToolbarButton"}]}]:[],...b?[{kind:"toolbarButtonGroup",children:[...b?[{kind:"measurementsToolbarButton"}]:[]]}]:[],...n?[{kind:"helpToolbarButton"}]:[],...k],mobile:[{kind:"toolbarButtonGroup",children:[{kind:"resetCameraToolbarButton"}]},{kind:"toolbarButtonGroup",children:[{kind:"enterFullscreenToolbarButton"}]},...k],mobileMenu:[...b?[{kind:"measurementsMenuAction"}]:[],...m?[{kind:"languageMenuAction"}]:[],...n?[{kind:"helpMenuAction"}]:[]]})).with([!0,!0],()=>({desktop:[{kind:"toolbarButtonGroup",children:[{kind:"exitFullscreenToolbarButton"}]}],mobile:[{kind:"toolbarButtonGroup",children:[{kind:"exitFullscreenToolbarButton"}]}],mobileMenu:[]})).exhaustive()).exhaustive();return this._toolbarCache.set(o,{toolbarHelpExists:n,hasAssistant:a,result:x}),x};getNavigationSteps=t=>{let e=this._context.domainContextSelectors.getComponentReader().readFirstRootComponent({componentTypes:[r]},t);return e?.state.steps??[]}}
@@ -1,5 +1,5 @@
1
1
  import { type $DomainEntity, type ConfiguratorBuilder, type CreateCustomPhoenixEntityElement, type CreateCustomPhoenixLayoutElement, type CreateGetThemeHandler, type CreateGetWebComponentOptionsHandler, type CreatePhoenixHandler, type DomainEntity, type IsCreateRecipeUpdate, type IsReplaceRecipeUpdate, type TransformerBuilder, type TransformerFactory, type UpdateFactory, getIdSequence } from '#package/domain';
2
- import { type CreateCollectFrontendDataHandler, type CreateFilterPublishedChunksHandler, type CreateNotAuthenticatedPage, type IsAngleDimensionUpdate, type IsAttributeSelectionUpdate, type IsAttributeSwitchUpdate, type IsDeleteEntityUpdate, type IsDistanceDimensionUpdate, type IsGenericDimensionUpdate, type IsSwatchSelectionUpdate, type IsTextValueUpdate, type UseAccessService, type UseActiveNavigationState, type UseActiveToolState, type UseActiveViewState, type UseAnalyticsService, type UseAngleDimension, type UseAttributeSelection, type UseAttributeSwitch, type UseAuthenticatedClient, type UseAuthorizedClient, type UseBackendData, type UseChildEntitySelection, type UseComponent, type UseComponents, type UseComposition, type UseConfigurationId, type UseControlViolations, type UseCookRecipes, type UseCookReplaceRecipes, type UseCookedRecipes, type UseCookedReplaceRecipes, type UseCreateAuthorizedClient, type UseDeleteEntity, type UseDeletedEntity, type UseDeselect, type UseDistanceDimension, type UseDistanceDimensionSelection, type UseDomainApplicationContext, type UseDomainApplicationProps, type UseDomainContext, type UseDomainEntityState, type UseEntityPrice, type UseEntitySelector, type UseFinalizeViolations, type UseFirstComponent, type UseFirstRootComponent, type UseFrontendData, type UseGenericDimension, type UseGroupedRecipeOptions, type UseHoveredDomainEntityId, type UseHoveredEntity, type UseHoveredEntityId, type UseIntegrationService, type UseIntegrationState, type UseIsFullscreenActive, type UseLoadedData, type UseLoadingState, type UseMapViolationHints, type UseNavigate, type UsePopNavigate, type UsePresetEmbeddedState, type UsePublishedData, type UsePushNavigate, type UseRecipeEmbeddedState, type UseReplaceEntityRecipeOptions, type UseRootComponents, type UseRootEntityId, type UseRootEntityPrice, type UseRootEntitySelector, type UseRootEntityState, type UseSelectEntity, type UseSelectParent, type UseSelectedDomainEntityId, type UseSelectedEntity, type UseSelectedEntityId, type UseSession, type UseSessionRole, type UseSessionService, type UseSlice, type UseState, type UseStateValidity, type UseSwatchSelection, type UseSynchronizedSelector, type UseSynchronizedSelector$, type UseTextValue, type UseUpdateControl, type UseUpdatedControl, useLoadingStateValue } from '#package/react-sdk';
2
+ import { type CreateCollectFrontendDataHandler, type CreateFilterPublishedChunksHandler, type CreateNotAuthenticatedPage, type IsAngleDimensionUpdate, type IsAttributeSelectionUpdate, type IsAttributeSwitchUpdate, type IsDeleteEntityUpdate, type IsDistanceDimensionUpdate, type IsGenericDimensionUpdate, type IsSwatchSelectionUpdate, type IsTextValueUpdate, type UseAccessService, type UseActiveNavigationState, type UseActiveToolState, type UseActiveViewState, type UseAnalyticsService, type UseAngleDimension, type UseAttributeSelection, type UseAttributeSwitch, type UseAuthenticatedClient, type UseAuthorizedClient, type UseBackendData, type UseChildEntitySelection, type UseComponent, type UseComponents, type UseComposition, type UseConfigurationId, type UseConfiguratorMessages, type UseControlViolations, type UseCookRecipes, type UseCookReplaceRecipes, type UseCookedRecipes, type UseCookedReplaceRecipes, type UseCreateAuthorizedClient, type UseDeleteEntity, type UseDeletedEntity, type UseDeselect, type UseDistanceDimension, type UseDistanceDimensionSelection, type UseDomainApplicationContext, type UseDomainApplicationProps, type UseDomainContext, type UseDomainEntityState, type UseEntityPrice, type UseEntitySelector, type UseFinalizeViolations, type UseFirstComponent, type UseFirstRootComponent, type UseFrontendData, type UseGenericDimension, type UseGroupedRecipeOptions, type UseHoveredDomainEntityId, type UseHoveredEntity, type UseHoveredEntityId, type UseIntegrationService, type UseIntegrationState, type UseIsFullscreenActive, type UseLoadedData, type UseLoadingState, type UseMapViolationHints, type UseNavigate, type UsePopNavigate, type UsePresetEmbeddedState, type UsePublishedData, type UsePushNavigate, type UseRecipeEmbeddedState, type UseReplaceEntityRecipeOptions, type UseRootComponents, type UseRootEntityId, type UseRootEntityPrice, type UseRootEntitySelector, type UseRootEntityState, type UseSelectEntity, type UseSelectParent, type UseSelectedDomainEntityId, type UseSelectedEntity, type UseSelectedEntityId, type UseSession, type UseSessionRole, type UseSessionService, type UseSetFullscreen, type UseSlice, type UseState, type UseStateValidity, type UseSwatchSelection, type UseSynchronizedSelector, type UseSynchronizedSelector$, type UseTextValue, type UseUpdateControl, type UseUpdatedControl, useLoadingStateValue } from '#package/react-sdk';
3
3
  import { type CreatePhoenixIconSet } from '#package/ui-sdk';
4
4
  import { type UseConfiguratorExtensions } from '../application-runtime/index.js';
5
5
  import { type CreateOnApplicationStartProvider, type CreateOnBackendDataReadyProvider, type CreateOnConfiguratorReadyProvider, type CreateOnFrontendDataReadyProvider, type CreateOnGoToIndexHandler, type CreateOnPresetLoadedHandler, type CreateOnPublishedDataReadyProvider, type CreateOnRoutingReadyProvider, type CreateOnSessionReadyProvider, type UseConfiguratorRouting, type UsePresetSelection, usePropertyPageStack, usePropertyPageState } from '../configurator-context/index.js';
@@ -8,6 +8,7 @@ import type { UseUpdateEntityObjectSelection } from '../scene/scene-entity/drag-
8
8
  import { type CreateAppLoader, type CreateCanvasLoader, type CreateLayoutAdminUi, type CreateLayoutCustomOwnerUi, type CreateLayoutCustomReadUi, type CreateLayoutDialog, type CreateLayoutFooter, type CreateLayoutToolbarDesktop, type CreateLayoutToolbarDesktopFullScreen, type CreateLayoutToolbarReadDesktop, type CreateLayoutToolbarReadDesktopFullScreen, type CreateLayoutUserUi, type CreateToolbarHelp } from '../ui/index.js';
9
9
  import { useGenerateShareLink } from '../ui/phoenix-layout-elements/share/use-share.js';
10
10
  import { type CreatePresetDeviceNotSupported, type CreatePresetPageAction, type CreatePresetUi } from '../ui/preset-layout/PresetUi.js';
11
+ import { type UseFinalizeAction } from './use-finalize-action.js';
11
12
  export interface ConfiguratorInterface<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>, NAVIGATION_STATES extends string, VIEW_STATES extends string, TOOL_STATES extends string, EXPORT_STATES extends string, FINALIZE_DATA extends Record<string, unknown>, FINALIZE_RESULT extends Record<string, unknown>> {
12
13
  /**
13
14
  * Factory for creating update functions for entities.
@@ -341,6 +342,17 @@ export interface ConfiguratorInterface<ENTITIES extends DomainEntity<string>, AL
341
342
  * Returns finalize properties based on the validity of the provided emission used for dry running finalize button
342
343
  */
343
344
  useFinalizeViolations: UseFinalizeViolations<ENTITIES, $MAP>;
345
+ /**
346
+ * Calls the given function once for every violation, side-effect hint and validation error: the violations of a
347
+ * rejected change, the hints of a committed change and an error thrown while a change was validated, with the
348
+ * text resolved
349
+ */
350
+ useConfiguratorMessages: UseConfiguratorMessages<ENTITIES, $MAP>;
351
+ /**
352
+ * Runs the project handler a `finalizeAction` component names, with its pending state, its error and the
353
+ * finalize violations; call it once per component, wrapped in `PhoenixHandlerBoundary`
354
+ */
355
+ useFinalizeAction: UseFinalizeAction;
344
356
  /**
345
357
  * Returns component based on a filter specified
346
358
  */
@@ -466,6 +478,10 @@ export interface ConfiguratorInterface<ENTITIES extends DomainEntity<string>, AL
466
478
  * Get the currently active fullscreen state
467
479
  */
468
480
  useIsFullscreenActive: UseIsFullscreenActive;
481
+ /**
482
+ * Turn the fullscreen state on or off. The state is a flag the layout reads with `useIsFullscreenActive`
483
+ */
484
+ useSetFullscreen: UseSetFullscreen;
469
485
  /**
470
486
  * Returns composition tree of the domain
471
487
  */
@@ -1 +1 @@
1
- import{createCustomPhoenixEntityElement as e,createCustomPhoenixLayoutElement as t,createGetThemeHandler as r,createGetWebComponentOptionsHandler as o,createPhoenixHandler as i,createTransformer as s,createTransformerBuilder as a,createUpdateFactory as n,getIdSequence as m,isCreateEntityUpdate as p,isReplaceEntityUpdate as u}from"#package/domain";import{createCollectFrontendDataHandler as d,createFilterPublishedChunksHandler as c,createNotAuthenticatedPage as f,isAngleDimensionUpdate as g,isAttributeSelectionUpdate as j,isAttributeSwitchUpdate as l,isDeleteEntityUpdate as x,isDistanceDimensionUpdate as y,isGenericDimensionUpdate as k,isSwatchSelectionUpdate as h,isTextValueUpdate as S,useAccessService as E,useActiveNavigationState as I,useActiveToolState as q,useActiveViewState as A,useAnalyticsService as B,useAngleDimension as C,useAttributeSelection as P,useAttributeSwitch as R,useAuthenticatedClient as U,useAuthorizedClient as b,useBackendData as v,useChildEntitySelection as w,useCommittedSlice as z,useCommittedState as D,useComponent as F,useComponents as G,useComposition as H,useConfigurationId as J,useControlViolations as K,useCookRecipes as L,useCookReplaceRecipes as M,useCookedRecipes as N,useCookedReplaceRecipes as O,useCreateAuthorizedClient as Q,useDeleteEntity as T,useDeletedEntity as V,useDeselect as W,useDistanceDimension as X,useDistanceDimensionSelection as Y,useDomain as Z,useDomainApplication as $,useDomainApplicationProps as _,useDomainEntityRenderedState as ee,useDomainEntityState as et,useEntityPrice as er,useEntitySelector as eo,useFinalizeViolations as ei,useFirstComponent as es,useFirstRenderedComponent as ea,useFirstRootComponent as en,useFirstRootRenderedComponent as em,useFrontendData as ep,useGenericDimension as eu,useGroupedRecipeOptions as ed,useHoveredDomainEntityId as ec,useHoveredEntity as ef,useHoveredEntityId as eg,useIntegrationService as ej,useIntegrationState as el,useIsFullscreenActive as ex,useLoadedData as ey,useLoadingState as ek,useLoadingStateValue as eh,useMapViolationHints as eS,useNavigate as eE,usePopNavigate as eI,usePresetEmbeddedState as eq,usePublishedData as eA,usePushNavigate as eB,useRecipeEmbeddedState as eC,useRenderedComponent as eP,useRenderedComponents as eR,useRenderedEntitySelector as eU,useRenderedRootEntitySelector as eb,useRenderedSelector as ev,useRenderedSelector$ as ew,useRenderedSlice as ez,useRenderedState as eD,useReplaceEntityRecipeOptions as eF,useRootComponents as eG,useRootEntityId as eH,useRootEntityPrice as eJ,useRootEntityRenderedId as eK,useRootEntityRenderedState as eL,useRootEntitySelector as eM,useRootEntityState as eN,useRootRenderedComponents as eO,useSelectEntity as eQ,useSelectParent as eT,useSelectedDomainEntityId as eV,useSelectedEntity as eW,useSelectedEntityId as eX,useSession as eY,useSessionRole as eZ,useSessionService as e$,useStateValidity as e_,useStoreSelector as e0,useStoreSelector$ as e1,useSwatchSelection as e2,useTextValue as e3,useUpdateControl as e4,useUpdatedControl as e5}from"#package/react-sdk";import{createPhoenixIconSet as e6}from"#package/ui-sdk";import{useConfigurator as e7}from"../application-runtime/index.js";import{createOnApplicationStartProvider as e8,createOnBackendDataReadyProvider as e9,createOnConfiguratorReadyProvider as te,createOnFrontendDataReadyProvider as tt,createOnGoToIndexHandler as tr,createOnPresetLoadedHandler as to,createOnPublishedDataReadyProvider as ti,createOnRoutingReadyProvider as ts,createOnSessionReadyProvider as ta,useConfiguratorRouting as tn,usePresetSelection as tm,usePropertyPageStack as tp,usePropertyPageState as tu}from"../configurator-context/index.js";import{createGetTextureProcessingMapHandler as td}from"../scene/index.js";import{useUpdateEntityObjectSelection as tc}from"../scene/scene-entity/drag-and-drop/use-updated-selection.js";import{createAppLoader as tf,createCanvasLoader as tg,createLayoutAdminUi as tj,createLayoutCustomOwnerUi as tl,createLayoutCustomReadUi as tx,createLayoutDialog as ty,createLayoutFooter as tk,createLayoutToolbarDesktop as th,createLayoutToolbarDesktopFullScreen as tS,createLayoutToolbarReadDesktop as tE,createLayoutToolbarReadDesktopFullScreen as tI,createLayoutUserUi as tq,createToolbarHelp as tA}from"../ui/index.js";import{useGenerateShareLink as tB}from"../ui/phoenix-layout-elements/share/use-share.js";import{createPresetDeviceNotSupported as tC,createPresetPageAction as tP,createPresetUi as tR}from"../ui/preset-layout/PresetUi.js";export const createConfiguratorInterface=tU=>({updates:n(),getIdSequence:m,createGetWebComponentOptionsHandler:o,createGetThemeHandler:r,createPhoenixHandler:i,createCustomPhoenixEntityElement:e,createCustomPhoenixLayoutElement:t,createPhoenixIconSet:e6,createGetTextureProcessingMapHandler:td,createCollectFrontendDataHandler:d,createFilterPublishedChunksHandler:c,createOnGoToIndexHandler:tr,createOnApplicationStartProvider:e8,createOnSessionReadyProvider:ta,createOnPublishedDataReadyProvider:ti,createOnFrontendDataReadyProvider:tt,createOnBackendDataReadyProvider:e9,createOnRoutingReadyProvider:ts,createOnConfiguratorReadyProvider:te,createOnPresetLoadedHandler:to,createPresetUi:tR,createPresetPageAction:tP,createPresetDeviceNotSupported:tC,createLayoutFooter:tk,createAppLoader:tf,createCanvasLoader:tg,createLayoutDialog:ty,createLayoutToolbarDesktop:th,createLayoutToolbarDesktopFullScreen:tS,createLayoutToolbarReadDesktop:tE,createLayoutToolbarReadDesktopFullScreen:tI,createLayoutCustomOwnerUi:tl,createLayoutCustomReadUi:tx,createLayoutAdminUi:tj,createLayoutUserUi:tq,createToolbarHelp:tA,createNotAuthenticatedPage:f,createTransformer:s,transformerBuilder:a(),useAnalytics:B,useAuthenticatedClient:U,useAuthorizedClient:b,useCreateAuthorizedClient:Q,useAccessService:E,useConfigurationId:J,useSession:eY,useSessionRole:eZ,useSessionService:e$,useDomain:Z,useDomainApplication:$,useConfigurator:e7,useConfiguratorRouting:tn,usePresetSelection:tm,usePublishedData:eA,useFrontendData:ep,useBackendData:v,useDomainApplicationProps:_,useLoadedData:ey,useIntegrationService:ej,useIntegrationState:el,usePresetEmbeddedState:eq,useRecipeEmbeddedState:eC,useCommittedSlice:z,useRenderedSlice:ez,useCommittedState:D,useRenderedState:eD,useStoreSelector:e0,useRenderedSelector:ev,useStoreSelector$:e1,useRenderedSelector$:ew,useEntitySelector:eo,useRenderedEntitySelector:eU,useRootEntitySelector:eM,useRenderedRootEntitySelector:eb,useStateValidity:e_,useMapViolationHints:eS,useNavigate:eE,usePopNavigate:eI,usePushNavigate:eB,useControlViolations:K,useFinalizeViolations:ei,useComponent:F,useRenderedComponent:eP,useComponents:G,useRenderedComponents:eR,useFirstComponent:es,useFirstRenderedComponent:ea,useRootComponents:eG,useRootRenderedComponents:eO,useFirstRootComponent:en,useFirstRootRenderedComponent:em,useEntityState:et,useEntityRenderedState:ee,useRootEntityState:eN,useRootEntityRenderedState:eL,useRootEntityId:eH,useRootEntityRenderedId:eK,useEntityPrice:er,useRootEntityPrice:eJ,useSelectedEntity:eW,useSelectedEntityId:eX,useSelectedDomainEntityId:eV,useSelectEntity:eQ,useDeselect:W,useSelectParent:eT,useHoveredEntity:ef,useHoveredEntityId:eg,useHoveredDomainEntityId:ec,useActiveNavigationState:I,useActiveViewState:A,useActiveToolState:q,useIsFullscreenActive:ex,useComposition:H,useUpdateControl:e4,useUpdatedControl:e5,useCookRecipes:L,useCookedRecipes:N,useCookReplaceRecipes:M,useCookedReplaceRecipes:O,useDeleteEntity:T,useDeletedEntity:V,useSwatchSelection:e2,useTextValue:e3,useAttributeSelection:P,useAttributeSwitch:R,useDistanceDimension:X,useDistanceDimensionSelection:Y,useGenericDimension:eu,useAngleDimension:C,useChildEntitySelection:w,useGroupedRecipeOptions:ed,useReplaceEntityRecipeOptions:eF,useUpdateEntityObjectSelection:tc,useGenerateShareLink:tB,useLoadingState:ek,useLoadingStateValue:eh,usePropertyPageStack:tp,usePropertyPageState:tu,isCreateEntityUpdate:p,isReplaceEntityUpdate:u,isDeleteEntityUpdate:x,isAngleDimensionUpdate:g,isDistanceDimensionUpdate:y,isGenericDimensionUpdate:k,isAttributeSelectionUpdate:j,isAttributeSwitchUpdate:l,isTextValueUpdate:S,isSwatchSelectionUpdate:h});
1
+ import{createCustomPhoenixEntityElement as e,createCustomPhoenixLayoutElement as t,createGetThemeHandler as r,createGetWebComponentOptionsHandler as o,createPhoenixHandler as i,createTransformer as s,createTransformerBuilder as a,createUpdateFactory as n,getIdSequence as m,isCreateEntityUpdate as p,isReplaceEntityUpdate as u}from"#package/domain";import{createCollectFrontendDataHandler as c,createFilterPublishedChunksHandler as d,createNotAuthenticatedPage as f,isAngleDimensionUpdate as j,isAttributeSelectionUpdate as l,isAttributeSwitchUpdate as g,isDeleteEntityUpdate as x,isDistanceDimensionUpdate as y,isGenericDimensionUpdate as k,isSwatchSelectionUpdate as h,isTextValueUpdate as S,useAccessService as E,useActiveNavigationState as I,useActiveToolState as q,useActiveViewState as z,useAnalyticsService as A,useAngleDimension as B,useAttributeSelection as C,useAttributeSwitch as P,useAuthenticatedClient as R,useAuthorizedClient as U,useBackendData as b,useChildEntitySelection as v,useCommittedSlice as w,useCommittedState as D,useComponent as F,useComponents as G,useComposition as H,useConfigurationId as J,useConfiguratorMessages as K,useControlViolations as L,useCookRecipes as M,useCookReplaceRecipes as N,useCookedRecipes as O,useCookedReplaceRecipes as Q,useCreateAuthorizedClient as T,useDeleteEntity as V,useDeletedEntity as W,useDeselect as X,useDistanceDimension as Y,useDistanceDimensionSelection as Z,useDomain as $,useDomainApplication as _,useDomainApplicationProps as ee,useDomainEntityRenderedState as et,useDomainEntityState as er,useEntityPrice as eo,useEntitySelector as ei,useFinalizeViolations as es,useFirstComponent as ea,useFirstRenderedComponent as en,useFirstRootComponent as em,useFirstRootRenderedComponent as ep,useFrontendData as eu,useGenericDimension as ec,useGroupedRecipeOptions as ed,useHoveredDomainEntityId as ef,useHoveredEntity as ej,useHoveredEntityId as el,useIntegrationService as eg,useIntegrationState as ex,useIsFullscreenActive as ey,useLoadedData as ek,useLoadingState as eh,useLoadingStateValue as eS,useMapViolationHints as eE,useNavigate as eI,usePopNavigate as eq,usePresetEmbeddedState as ez,usePublishedData as eA,usePushNavigate as eB,useRecipeEmbeddedState as eC,useRenderedComponent as eP,useRenderedComponents as eR,useRenderedEntitySelector as eU,useRenderedRootEntitySelector as eb,useRenderedSelector as ev,useRenderedSelector$ as ew,useRenderedSlice as eD,useRenderedState as eF,useReplaceEntityRecipeOptions as eG,useRootComponents as eH,useRootEntityId as eJ,useRootEntityPrice as eK,useRootEntityRenderedId as eL,useRootEntityRenderedState as eM,useRootEntitySelector as eN,useRootEntityState as eO,useRootRenderedComponents as eQ,useSelectEntity as eT,useSelectParent as eV,useSelectedDomainEntityId as eW,useSelectedEntity as eX,useSelectedEntityId as eY,useSession as eZ,useSessionRole as e$,useSessionService as e_,useSetFullscreen as e0,useStateValidity as e1,useStoreSelector as e2,useStoreSelector$ as e3,useSwatchSelection as e4,useTextValue as e5,useUpdateControl as e6,useUpdatedControl as e7}from"#package/react-sdk";import{createPhoenixIconSet as e8}from"#package/ui-sdk";import{useConfigurator as e9}from"../application-runtime/index.js";import{createOnApplicationStartProvider as te,createOnBackendDataReadyProvider as tt,createOnConfiguratorReadyProvider as tr,createOnFrontendDataReadyProvider as to,createOnGoToIndexHandler as ti,createOnPresetLoadedHandler as ts,createOnPublishedDataReadyProvider as ta,createOnRoutingReadyProvider as tn,createOnSessionReadyProvider as tm,useConfiguratorRouting as tp,usePresetSelection as tu,usePropertyPageStack as tc,usePropertyPageState as td}from"../configurator-context/index.js";import{createGetTextureProcessingMapHandler as tf}from"../scene/index.js";import{useUpdateEntityObjectSelection as tj}from"../scene/scene-entity/drag-and-drop/use-updated-selection.js";import{createAppLoader as tl,createCanvasLoader as tg,createLayoutAdminUi as tx,createLayoutCustomOwnerUi as ty,createLayoutCustomReadUi as tk,createLayoutDialog as th,createLayoutFooter as tS,createLayoutToolbarDesktop as tE,createLayoutToolbarDesktopFullScreen as tI,createLayoutToolbarReadDesktop as tq,createLayoutToolbarReadDesktopFullScreen as tz,createLayoutUserUi as tA,createToolbarHelp as tB}from"../ui/index.js";import{useGenerateShareLink as tC}from"../ui/phoenix-layout-elements/share/use-share.js";import{createPresetDeviceNotSupported as tP,createPresetPageAction as tR,createPresetUi as tU}from"../ui/preset-layout/PresetUi.js";import{useFinalizeAction as tb}from"./use-finalize-action.js";export const createConfiguratorInterface=tv=>({updates:n(),getIdSequence:m,createGetWebComponentOptionsHandler:o,createGetThemeHandler:r,createPhoenixHandler:i,createCustomPhoenixEntityElement:e,createCustomPhoenixLayoutElement:t,createPhoenixIconSet:e8,createGetTextureProcessingMapHandler:tf,createCollectFrontendDataHandler:c,createFilterPublishedChunksHandler:d,createOnGoToIndexHandler:ti,createOnApplicationStartProvider:te,createOnSessionReadyProvider:tm,createOnPublishedDataReadyProvider:ta,createOnFrontendDataReadyProvider:to,createOnBackendDataReadyProvider:tt,createOnRoutingReadyProvider:tn,createOnConfiguratorReadyProvider:tr,createOnPresetLoadedHandler:ts,createPresetUi:tU,createPresetPageAction:tR,createPresetDeviceNotSupported:tP,createLayoutFooter:tS,createAppLoader:tl,createCanvasLoader:tg,createLayoutDialog:th,createLayoutToolbarDesktop:tE,createLayoutToolbarDesktopFullScreen:tI,createLayoutToolbarReadDesktop:tq,createLayoutToolbarReadDesktopFullScreen:tz,createLayoutCustomOwnerUi:ty,createLayoutCustomReadUi:tk,createLayoutAdminUi:tx,createLayoutUserUi:tA,createToolbarHelp:tB,createNotAuthenticatedPage:f,createTransformer:s,transformerBuilder:a(),useAnalytics:A,useAuthenticatedClient:R,useAuthorizedClient:U,useCreateAuthorizedClient:T,useAccessService:E,useConfigurationId:J,useSession:eZ,useSessionRole:e$,useSessionService:e_,useDomain:$,useDomainApplication:_,useConfigurator:e9,useConfiguratorRouting:tp,usePresetSelection:tu,usePublishedData:eA,useFrontendData:eu,useBackendData:b,useDomainApplicationProps:ee,useLoadedData:ek,useIntegrationService:eg,useIntegrationState:ex,usePresetEmbeddedState:ez,useRecipeEmbeddedState:eC,useCommittedSlice:w,useRenderedSlice:eD,useCommittedState:D,useRenderedState:eF,useStoreSelector:e2,useRenderedSelector:ev,useStoreSelector$:e3,useRenderedSelector$:ew,useEntitySelector:ei,useRenderedEntitySelector:eU,useRootEntitySelector:eN,useRenderedRootEntitySelector:eb,useStateValidity:e1,useMapViolationHints:eE,useNavigate:eI,usePopNavigate:eq,usePushNavigate:eB,useControlViolations:L,useFinalizeViolations:es,useConfiguratorMessages:K,useFinalizeAction:tb,useComponent:F,useRenderedComponent:eP,useComponents:G,useRenderedComponents:eR,useFirstComponent:ea,useFirstRenderedComponent:en,useRootComponents:eH,useRootRenderedComponents:eQ,useFirstRootComponent:em,useFirstRootRenderedComponent:ep,useEntityState:er,useEntityRenderedState:et,useRootEntityState:eO,useRootEntityRenderedState:eM,useRootEntityId:eJ,useRootEntityRenderedId:eL,useEntityPrice:eo,useRootEntityPrice:eK,useSelectedEntity:eX,useSelectedEntityId:eY,useSelectedDomainEntityId:eW,useSelectEntity:eT,useDeselect:X,useSelectParent:eV,useHoveredEntity:ej,useHoveredEntityId:el,useHoveredDomainEntityId:ef,useActiveNavigationState:I,useActiveViewState:z,useActiveToolState:q,useIsFullscreenActive:ey,useSetFullscreen:e0,useComposition:H,useUpdateControl:e6,useUpdatedControl:e7,useCookRecipes:M,useCookedRecipes:O,useCookReplaceRecipes:N,useCookedReplaceRecipes:Q,useDeleteEntity:V,useDeletedEntity:W,useSwatchSelection:e4,useTextValue:e5,useAttributeSelection:C,useAttributeSwitch:P,useDistanceDimension:Y,useDistanceDimensionSelection:Z,useGenericDimension:ec,useAngleDimension:B,useChildEntitySelection:v,useGroupedRecipeOptions:ed,useReplaceEntityRecipeOptions:eG,useUpdateEntityObjectSelection:tj,useGenerateShareLink:tC,useLoadingState:eh,useLoadingStateValue:eS,usePropertyPageStack:tc,usePropertyPageState:td,isCreateEntityUpdate:p,isReplaceEntityUpdate:u,isDeleteEntityUpdate:x,isAngleDimensionUpdate:j,isDistanceDimensionUpdate:y,isGenericDimensionUpdate:k,isAttributeSelectionUpdate:l,isAttributeSwitchUpdate:g,isTextValueUpdate:S,isSwatchSelectionUpdate:h});
@@ -10,6 +10,7 @@ declare const GoToProductsClicked: () => import("#package/domain").UserActionEve
10
10
  declare const ExpandedViewClosed: () => import("#package/domain").UserActionEvent;
11
11
  declare const ProductSelected: (productType: string, productName: string) => import("#package/domain").UserActionEvent;
12
12
  declare const SelectionHotspotClicked: (id: string) => import("#package/domain").UserActionEvent;
13
+ declare const AssistantEntityLinkClicked: (id: string) => import("#package/domain").UserActionEvent;
13
14
  declare const RedoButtonClicked: () => import("#package/domain").UserActionEvent;
14
15
  declare const UndoButtonClicked: () => import("#package/domain").UserActionEvent;
15
16
  declare const GlobalDimensionsButtonClicked: (dimensionUnit: string) => import("#package/domain").UserActionEvent;
@@ -31,6 +32,7 @@ export declare const FrontendAnalyticsFactory: {
31
32
  GoToProductsClicked: typeof GoToProductsClicked;
32
33
  ProductSelected: typeof ProductSelected;
33
34
  SelectionHotspotClicked: typeof SelectionHotspotClicked;
35
+ AssistantEntityLinkClicked: typeof AssistantEntityLinkClicked;
34
36
  RedoButtonClicked: typeof RedoButtonClicked;
35
37
  UndoButtonClicked: typeof UndoButtonClicked;
36
38
  GlobalDimensionsButtonClicked: typeof GlobalDimensionsButtonClicked;