@salsita-ai/sdk 0.50.0-develop.f03b563886 → 0.50.0-develop.f101f4c3c9

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 (1171) hide show
  1. package/README.md +19 -14
  2. package/dist/admin/default-admin-elements.d.ts +9 -0
  3. package/dist/admin/default-admin-elements.js +1 -0
  4. package/dist/admin/default-elements/built-in-entity-element.d.ts +10 -0
  5. package/dist/admin/default-elements/built-in-entity-element.js +1 -0
  6. package/dist/admin/default-elements/built-in-layout-element.d.ts +10 -0
  7. package/dist/admin/default-elements/built-in-layout-element.js +1 -0
  8. package/dist/admin/default-elements/index.d.ts +2 -0
  9. package/dist/admin/default-elements/index.js +1 -0
  10. package/dist/admin/index.d.ts +1 -0
  11. package/dist/admin/index.js +1 -1
  12. package/dist/application-spec/caching/content-diff.js +1 -1
  13. package/dist/application-spec/core/application-file.d.ts +0 -2
  14. package/dist/application-spec/core/application-file.js +1 -1
  15. package/dist/application-spec/core/components/component-filter.d.ts +53 -0
  16. package/dist/application-spec/core/components/component-filter.js +1 -0
  17. package/dist/application-spec/core/components/index.d.ts +2 -0
  18. package/dist/application-spec/core/components/index.js +1 -0
  19. package/dist/application-spec/core/components/sdk-code-ref.d.ts +9 -0
  20. package/dist/application-spec/core/components/sdk-code-ref.js +1 -0
  21. package/dist/application-spec/core/enhanced-json-value.d.ts +0 -68
  22. package/dist/application-spec/core/enhanced-json-value.js +1 -1
  23. package/dist/application-spec/core/expressions/index.d.ts +2 -0
  24. package/dist/application-spec/core/expressions/index.js +1 -0
  25. package/dist/application-spec/core/expressions/relation-expression-params.d.ts +11 -0
  26. package/dist/application-spec/core/expressions/sdk-expression-implementation.d.ts +24 -0
  27. package/dist/application-spec/core/expressions/sdk-expression-implementation.js +1 -0
  28. package/dist/application-spec/core/index.d.ts +2 -0
  29. package/dist/application-spec/core/index.js +1 -1
  30. package/dist/application-spec/core/json-value.d.ts +1 -1
  31. package/dist/application-spec/{core → enhanced-json}/eval-to-constant.d.ts +1 -1
  32. package/dist/application-spec/enhanced-json/index.d.ts +4 -0
  33. package/dist/application-spec/enhanced-json/index.js +1 -0
  34. package/dist/application-spec/enhanced-json/is-enhanced-json-array.d.ts +2 -0
  35. package/dist/application-spec/enhanced-json/is-enhanced-json-array.js +1 -0
  36. package/dist/application-spec/enhanced-json/resolve-enhanced-json-value.d.ts +18 -0
  37. package/dist/application-spec/enhanced-json/resolve-enhanced-json-value.js +1 -0
  38. package/dist/application-spec/enhanced-json/schema-from-value.d.ts +24 -0
  39. package/dist/application-spec/enhanced-json/schema-from-value.js +1 -0
  40. package/dist/application-spec/enhanced-json/stringify-enhanced-json-value.d.ts +14 -0
  41. package/dist/application-spec/enhanced-json/stringify-enhanced-json-value.js +1 -0
  42. package/dist/application-spec/enhanced-json/validate-enhanced-json-value-caps.d.ts +12 -0
  43. package/dist/application-spec/enhanced-json/validate-enhanced-json-value-caps.js +1 -0
  44. package/dist/application-spec/enhanced-json/validate-no-legacy-code-ref.d.ts +13 -0
  45. package/dist/application-spec/enhanced-json/validate-no-legacy-code-ref.js +1 -0
  46. package/dist/application-spec/errors/diagnostic-codes.d.ts +14 -0
  47. package/dist/application-spec/errors/diagnostic-codes.js +1 -1
  48. package/dist/application-spec/errors/diagnostic-messages.d.ts +17 -0
  49. package/dist/application-spec/errors/diagnostic-messages.js +1 -1
  50. package/dist/application-spec/generate-application/code/common/code-imports.js +1 -1
  51. package/dist/application-spec/generate-application/code/common/env-reader.js +2 -2
  52. package/dist/application-spec/generate-application/code/common/index.d.ts +1 -0
  53. package/dist/application-spec/generate-application/code/common/index.js +1 -1
  54. package/dist/application-spec/generate-application/code/common/single-quoted-string.d.ts +6 -0
  55. package/dist/application-spec/generate-application/code/common/single-quoted-string.js +1 -0
  56. package/dist/application-spec/generate-application/code/domain-runtime-files.js +1 -1
  57. package/dist/application-spec/generate-application/code/generate-application-code.d.ts +3 -2
  58. package/dist/application-spec/generate-application/code/generate-application-code.js +1 -1
  59. package/dist/application-spec/generate-application/code/project-scaffolding.d.ts +22 -14
  60. package/dist/application-spec/generate-application/code/project-scaffolding.js +2 -2
  61. package/dist/application-spec/generate-application/code/standalone-app-files.d.ts +2 -2
  62. package/dist/application-spec/generate-application/code/standalone-app-files.js +1 -1
  63. package/dist/application-spec/generate-application/code/story-files.js +1 -1
  64. package/dist/application-spec/generate-application/code/templates/admin-config.js +3 -0
  65. package/dist/application-spec/generate-application/code/templates/common/format-property-key.d.ts +7 -0
  66. package/dist/application-spec/generate-application/code/templates/common/format-property-key.js +1 -0
  67. package/dist/application-spec/generate-application/code/templates/common/schema-to-type-string.js +3 -3
  68. package/dist/application-spec/generate-application/code/templates/configurator-config.js +6 -4
  69. package/dist/application-spec/generate-application/code/templates/domain-spec/factory-types/domain-factory-types.d.ts +35 -0
  70. package/dist/application-spec/generate-application/code/templates/domain-spec/factory-types/domain-factory-types.js +5 -0
  71. package/dist/application-spec/generate-application/code/templates/domain-spec/factory-types/index.d.ts +1 -0
  72. package/dist/application-spec/generate-application/code/templates/domain-spec/factory-types/index.js +1 -0
  73. package/dist/application-spec/generate-application/code/templates/domain-spec/generate-component-optics.d.ts +1 -1
  74. package/dist/application-spec/generate-application/code/templates/domain-spec/generate-component-optics.js +7 -7
  75. package/dist/application-spec/generate-application/code/templates/domain-spec/generate-defaults.d.ts +4 -2
  76. package/dist/application-spec/generate-application/code/templates/domain-spec/generate-defaults.js +1 -1
  77. package/dist/application-spec/generate-application/code/templates/domain-spec/generate-domain-block.js +69 -73
  78. package/dist/application-spec/generate-application/code/templates/domain-spec/generate-invariants.d.ts +8 -0
  79. package/dist/application-spec/generate-application/code/templates/domain-spec/generate-invariants.js +1 -1
  80. package/dist/application-spec/generate-application/code/templates/domain-spec/generate-phx-globals.js +3 -0
  81. package/dist/application-spec/generate-application/code/templates/domain-spec/generate-presets.js +1 -1
  82. package/dist/application-spec/generate-application/code/templates/domain-spec/generate-relation-expressions.js +1 -1
  83. package/dist/application-spec/generate-application/code/templates/domain-spec/generate-resources.d.ts +6 -8
  84. package/dist/application-spec/generate-application/code/templates/domain-spec/generate-resources.js +21 -21
  85. package/dist/application-spec/generate-application/code/templates/domain-spec/generate-states.d.ts +1 -1
  86. package/dist/application-spec/generate-application/code/templates/domain-spec/generate-states.js +2 -2
  87. package/dist/application-spec/generate-application/code/templates/domain-spec/index.d.ts +3 -2
  88. package/dist/application-spec/generate-application/code/templates/domain-spec/index.js +1 -1
  89. package/dist/application-spec/generate-application/code/templates/domain-spec.js +12 -12
  90. package/dist/application-spec/generate-application/code/templates/domain.js +3 -3
  91. package/dist/application-spec/generate-application/code/templates/eslint-config.d.ts +5 -0
  92. package/dist/application-spec/generate-application/code/templates/eslint-config.js +4 -5
  93. package/dist/application-spec/generate-application/code/templates/frontend-config.js +3 -5
  94. package/dist/application-spec/generate-application/code/templates/gitignore.js +0 -3
  95. package/dist/application-spec/generate-application/code/templates/global-definition/generate-phx-types.d.ts +43 -0
  96. package/dist/application-spec/generate-application/code/templates/global-definition/generate-phx-types.js +31 -0
  97. package/dist/application-spec/generate-application/code/templates/global-definition/index.d.ts +1 -0
  98. package/dist/application-spec/generate-application/code/templates/global-definition/index.js +1 -1
  99. package/dist/application-spec/generate-application/code/templates/globals.js +24 -43
  100. package/dist/application-spec/generate-application/code/templates/index.d.ts +3 -10
  101. package/dist/application-spec/generate-application/code/templates/index.js +1 -1
  102. package/dist/application-spec/generate-application/code/templates/lingui-rc.d.ts +5 -0
  103. package/dist/application-spec/generate-application/code/templates/lingui-rc.js +4 -4
  104. package/dist/application-spec/generate-application/code/templates/prettier-config.d.ts +5 -0
  105. package/dist/application-spec/generate-application/code/templates/prettier-config.js +4 -5
  106. package/dist/application-spec/generate-application/code/templates/root-tsconfig.d.ts +6 -0
  107. package/dist/application-spec/generate-application/code/templates/root-tsconfig.js +2 -0
  108. package/dist/application-spec/generate-application/code/templates/skills/phoenix-cli-skill.js +1 -1
  109. package/dist/application-spec/generate-application/code/templates/skills/phoenix-create-configurator-skill.js +1 -1
  110. package/dist/application-spec/generate-application/code/templates/skills/phoenix-feedback-skill.js +5 -5
  111. package/dist/application-spec/generate-application/code/templates/skills/phoenix-review-skill.js +9 -3
  112. package/dist/application-spec/generate-application/code/templates/skills/phoenix-skill.js +1 -1
  113. package/dist/application-spec/generate-application/code/templates/skills/phoenix-variants-skill.js +2 -2
  114. package/dist/application-spec/generate-application/code/templates/skills/sdk-content.d.ts +31 -14
  115. package/dist/application-spec/generate-application/code/templates/skills/sdk-content.js +2 -4
  116. package/dist/application-spec/generate-application/code/templates/spec-code/collect-spec-code.d.ts +58 -0
  117. package/dist/application-spec/generate-application/code/templates/spec-code/collect-spec-code.js +1 -0
  118. package/dist/application-spec/generate-application/code/templates/spec-code/index.d.ts +2 -0
  119. package/dist/application-spec/generate-application/code/templates/spec-code/index.js +1 -0
  120. package/dist/application-spec/generate-application/code/templates/spec-code/spec-code.d.ts +18 -0
  121. package/dist/application-spec/generate-application/code/templates/spec-code/spec-code.js +41 -0
  122. package/dist/application-spec/generate-application/code/templates/spec-messages/index.d.ts +1 -0
  123. package/dist/application-spec/generate-application/code/templates/spec-messages/index.js +1 -0
  124. package/dist/application-spec/generate-application/code/templates/spec-messages/spec-messages.d.ts +20 -0
  125. package/dist/application-spec/generate-application/code/templates/spec-messages/spec-messages.js +6 -0
  126. package/dist/application-spec/generate-application/code/templates/story/phx-module.d.ts +8 -2
  127. package/dist/application-spec/generate-application/code/templates/story/phx-module.js +15 -3
  128. package/dist/application-spec/generate-application/code/templates/story/wrapper.d.ts +3 -0
  129. package/dist/application-spec/generate-application/code/templates/story/wrapper.js +2 -1
  130. package/dist/application-spec/generate-application/code/templates/tsconfig.d.ts +5 -0
  131. package/dist/application-spec/generate-application/code/templates/tsconfig.js +1 -1
  132. package/dist/application-spec/generate-application/code/templates/webhook-index.d.ts +6 -1
  133. package/dist/application-spec/generate-application/code/templates/webhook-index.js +10 -1
  134. package/dist/application-spec/generate-application/code/templates/webhooks-config.js +2 -3
  135. package/dist/application-spec/generate-application/index.d.ts +2 -0
  136. package/dist/application-spec/generate-application/index.js +1 -1
  137. package/dist/application-spec/generate-application/runtime/admin-runtime/admin-model-runtime.d.ts +6 -4
  138. package/dist/application-spec/generate-application/runtime/admin-runtime/admin-model-runtime.js +1 -1
  139. package/dist/application-spec/generate-application/runtime/admin-runtime/admin-runtime.d.ts +8 -3
  140. package/dist/application-spec/generate-application/runtime/admin-runtime/admin-runtime.js +1 -1
  141. package/dist/application-spec/generate-application/runtime/admin-runtime/states-runtime.d.ts +2 -2
  142. package/dist/application-spec/generate-application/runtime/application-runtime.d.ts +19 -7
  143. package/dist/application-spec/generate-application/runtime/application-runtime.js +1 -1
  144. package/dist/application-spec/generate-application/runtime/configurator-runtime/configurator-model-runtime.d.ts +6 -4
  145. package/dist/application-spec/generate-application/runtime/configurator-runtime/configurator-model-runtime.js +1 -1
  146. package/dist/application-spec/generate-application/runtime/configurator-runtime/configurator-runtime.d.ts +7 -4
  147. package/dist/application-spec/generate-application/runtime/configurator-runtime/configurator-runtime.js +1 -1
  148. package/dist/application-spec/generate-application/runtime/configurator-runtime/states-runtime.d.ts +2 -2
  149. package/dist/application-spec/generate-application/runtime/factory-data/factory-data-runtime.d.ts +43 -0
  150. package/dist/application-spec/generate-application/runtime/factory-data/factory-data-runtime.js +1 -0
  151. package/dist/application-spec/generate-application/runtime/factory-data/index.d.ts +3 -0
  152. package/dist/application-spec/generate-application/runtime/factory-data/index.js +1 -0
  153. package/dist/application-spec/generate-application/runtime/factory-data/recipe-defaults.d.ts +13 -0
  154. package/dist/application-spec/generate-application/runtime/factory-data/recipe-defaults.js +1 -0
  155. package/dist/application-spec/generate-application/runtime/factory-data/static-violations.d.ts +16 -0
  156. package/dist/application-spec/generate-application/runtime/factory-data/static-violations.js +1 -0
  157. package/dist/application-spec/generate-application/runtime/migrations/index.d.ts +1 -0
  158. package/dist/application-spec/generate-application/runtime/migrations/index.js +1 -0
  159. package/dist/application-spec/generate-application/runtime/migrations/migration-runtime.d.ts +53 -0
  160. package/dist/application-spec/generate-application/runtime/migrations/migration-runtime.js +1 -0
  161. package/dist/application-spec/generate-application/runtime/sections/assistant-runtime.d.ts +2 -2
  162. package/dist/application-spec/generate-application/runtime/sections/build-sdk-optic.d.ts +3 -2
  163. package/dist/application-spec/generate-application/runtime/sections/build-sdk-optic.js +1 -1
  164. package/dist/application-spec/generate-application/runtime/sections/build-user-bound-optic.d.ts +2 -1
  165. package/dist/application-spec/generate-application/runtime/sections/build-user-bound-optic.js +1 -1
  166. package/dist/application-spec/generate-application/runtime/sections/component-optic.d.ts +5 -1
  167. package/dist/application-spec/generate-application/runtime/sections/component-optic.js +1 -1
  168. package/dist/application-spec/generate-application/runtime/sections/data-runtime.d.ts +4 -4
  169. package/dist/application-spec/generate-application/runtime/sections/expression-runtime.d.ts +7 -4
  170. package/dist/application-spec/generate-application/runtime/sections/expression-runtime.js +1 -1
  171. package/dist/application-spec/generate-application/runtime/sections/generate-memo-eval-plan-runtime.d.ts +9 -5
  172. package/dist/application-spec/generate-application/runtime/sections/generate-memo-eval-plan-runtime.js +1 -1
  173. package/dist/application-spec/generate-application/runtime/sections/reflection-constants-runtime.d.ts +3 -1
  174. package/dist/application-spec/generate-application/runtime/sections/reflection-constants-runtime.js +1 -1
  175. package/dist/application-spec/generate-application/runtime/sections/theme-runtime.d.ts +2 -2
  176. package/dist/application-spec/generate-application/runtime/sections/transformers-runtime.d.ts +4 -6
  177. package/dist/application-spec/generate-application/runtime/spec-code/index.d.ts +2 -0
  178. package/dist/application-spec/generate-application/runtime/spec-code/index.js +1 -0
  179. package/dist/application-spec/generate-application/runtime/spec-code/resolve-spec-code.d.ts +18 -0
  180. package/dist/application-spec/generate-application/runtime/spec-code/resolve-spec-code.js +1 -0
  181. package/dist/application-spec/generate-application/runtime/spec-code/spec-code-module.d.ts +17 -0
  182. package/dist/application-spec/generate-application/runtime/spec-code/spec-code-module.js +1 -0
  183. package/dist/application-spec/generate-application/runtime-spec/decode-runtime-spec.d.ts +9 -0
  184. package/dist/application-spec/generate-application/runtime-spec/decode-runtime-spec.js +1 -0
  185. package/dist/application-spec/generate-application/runtime-spec/encode-runtime-spec.d.ts +8 -0
  186. package/dist/application-spec/generate-application/runtime-spec/encode-runtime-spec.js +1 -0
  187. package/dist/application-spec/generate-application/runtime-spec/encoded-runtime-spec.d.ts +27 -0
  188. package/dist/application-spec/generate-application/runtime-spec/encoded-runtime-spec.js +1 -0
  189. package/dist/application-spec/generate-application/runtime-spec/index.d.ts +5 -0
  190. package/dist/application-spec/generate-application/runtime-spec/index.js +1 -0
  191. package/dist/application-spec/generate-application/runtime-spec/runtime-spec.d.ts +68 -0
  192. package/dist/application-spec/generate-application/runtime-spec/runtime-spec.js +1 -0
  193. package/dist/application-spec/generate-application/runtime-spec/spec-code-id.d.ts +40 -0
  194. package/dist/application-spec/generate-application/runtime-spec/spec-code-id.js +1 -0
  195. package/dist/application-spec/index.d.ts +1 -0
  196. package/dist/application-spec/index.js +1 -1
  197. package/dist/application-spec/parse-application-files/categorize/categorize-files.d.ts +34 -0
  198. package/dist/application-spec/parse-application-files/categorize/categorize-files.js +1 -1
  199. package/dist/application-spec/parse-application-files/categorize/earlier-generated-editor-configs.d.ts +16 -0
  200. package/dist/application-spec/parse-application-files/categorize/earlier-generated-editor-configs.js +9 -0
  201. package/dist/application-spec/parse-application-files/categorize/earlier-generated-tsconfig.d.ts +9 -0
  202. package/dist/application-spec/parse-application-files/categorize/earlier-generated-tsconfig.js +1 -0
  203. package/dist/application-spec/parse-application-files/categorize/module-analysis.d.ts +1 -1
  204. package/dist/application-spec/parse-application-files/categorize/module-analysis.js +1 -1
  205. package/dist/application-spec/parse-application-files/raw-spec/parse-yaml-spec-file.js +1 -1
  206. package/dist/application-spec/parse-application-files/raw-spec/raw-assistant.d.ts +16 -3
  207. package/dist/application-spec/parse-application-files/raw-spec/raw-assistant.js +1 -1
  208. package/dist/application-spec/parse-application-files/raw-spec/raw-spec-file.js +1 -1
  209. package/dist/application-spec/parse-application-files/spec/application/admin-spec/admin-spec.js +1 -1
  210. package/dist/application-spec/parse-application-files/spec/application/configurator-spec/configurator-spec.js +1 -1
  211. package/dist/application-spec/parse-application-files/spec/common/index.d.ts +1 -0
  212. package/dist/application-spec/parse-application-files/spec/common/index.js +1 -1
  213. package/dist/application-spec/parse-application-files/spec/common/value-type/format-value-type.d.ts +3 -0
  214. package/dist/application-spec/parse-application-files/spec/common/value-type/format-value-type.js +1 -0
  215. package/dist/application-spec/parse-application-files/spec/common/value-type/index.d.ts +5 -0
  216. package/dist/application-spec/parse-application-files/spec/common/value-type/index.js +1 -0
  217. package/dist/application-spec/parse-application-files/spec/common/value-type/intersect-value-types.d.ts +6 -0
  218. package/dist/application-spec/parse-application-files/spec/common/value-type/intersect-value-types.js +1 -0
  219. package/dist/application-spec/parse-application-files/spec/common/value-type/is-assignable-value-type.d.ts +8 -0
  220. package/dist/application-spec/parse-application-files/spec/common/value-type/is-assignable-value-type.js +1 -0
  221. package/dist/application-spec/parse-application-files/spec/common/value-type/value-type-at.d.ts +10 -0
  222. package/dist/application-spec/parse-application-files/spec/common/value-type/value-type-at.js +1 -0
  223. package/dist/application-spec/parse-application-files/spec/common/value-type/value-type.d.ts +98 -0
  224. package/dist/application-spec/parse-application-files/spec/common/value-type/value-type.js +1 -0
  225. package/dist/application-spec/parse-application-files/spec/components/bindings/component-path.d.ts +13 -0
  226. package/dist/application-spec/parse-application-files/spec/components/bindings/component-path.js +1 -0
  227. package/dist/application-spec/parse-application-files/spec/components/bindings/index.d.ts +2 -0
  228. package/dist/application-spec/parse-application-files/spec/components/bindings/index.js +1 -1
  229. package/dist/application-spec/parse-application-files/spec/components/bindings/read-binding-type.d.ts +24 -0
  230. package/dist/application-spec/parse-application-files/spec/components/bindings/read-binding-type.js +1 -0
  231. package/dist/application-spec/parse-application-files/spec/components/component-entry.d.ts +1 -9
  232. package/dist/application-spec/parse-application-files/spec/components/component-entry.js +1 -1
  233. package/dist/application-spec/parse-application-files/spec/components/component-filter.d.ts +1 -54
  234. package/dist/application-spec/parse-application-files/spec/components/component-filter.js +1 -1
  235. package/dist/application-spec/parse-application-files/spec/components/component-state-type.d.ts +8 -0
  236. package/dist/application-spec/parse-application-files/spec/components/component-state-type.js +1 -0
  237. package/dist/application-spec/parse-application-files/spec/components/filter-criterion-types.d.ts +13 -0
  238. package/dist/application-spec/parse-application-files/spec/components/filter-criterion-types.js +1 -0
  239. package/dist/application-spec/parse-application-files/spec/components/index.d.ts +1 -1
  240. package/dist/application-spec/parse-application-files/spec/components/index.js +1 -1
  241. package/dist/application-spec/parse-application-files/spec/components/static-entity-id.d.ts +14 -0
  242. package/dist/application-spec/parse-application-files/spec/components/static-entity-id.js +1 -0
  243. package/dist/application-spec/parse-application-files/spec/components/user-component-entry.d.ts +6 -0
  244. package/dist/application-spec/parse-application-files/spec/components/user-component-entry.js +1 -1
  245. package/dist/application-spec/parse-application-files/spec/components/user-components.d.ts +7 -4
  246. package/dist/application-spec/parse-application-files/spec/components/user-components.js +1 -1
  247. package/dist/application-spec/parse-application-files/spec/expressions/expression-read-types.d.ts +24 -0
  248. package/dist/application-spec/parse-application-files/spec/expressions/expression-read-types.js +1 -0
  249. package/dist/application-spec/parse-application-files/spec/expressions/expression-read.d.ts +13 -0
  250. package/dist/application-spec/parse-application-files/spec/expressions/expression-read.js +1 -0
  251. package/dist/application-spec/parse-application-files/spec/expressions/expression-value-type.d.ts +9 -0
  252. package/dist/application-spec/parse-application-files/spec/expressions/expression-value-type.js +1 -0
  253. package/dist/application-spec/parse-application-files/spec/expressions/expression.d.ts +1 -28
  254. package/dist/application-spec/parse-application-files/spec/expressions/expression.js +1 -1
  255. package/dist/application-spec/parse-application-files/spec/expressions/expressions.d.ts +7 -3
  256. package/dist/application-spec/parse-application-files/spec/expressions/expressions.js +1 -1
  257. package/dist/application-spec/parse-application-files/spec/expressions/index.d.ts +0 -1
  258. package/dist/application-spec/parse-application-files/spec/expressions/index.js +1 -1
  259. package/dist/application-spec/parse-application-files/spec/expressions/memo-eval-plan.js +1 -1
  260. package/dist/application-spec/parse-application-files/spec/expressions/user-expressions.d.ts +3 -1
  261. package/dist/application-spec/parse-application-files/spec/expressions/user-expressions.js +1 -1
  262. package/dist/application-spec/parse-application-files/spec/invariants/invariants.d.ts +2 -2
  263. package/dist/application-spec/parse-application-files/spec/invariants/invariants.js +1 -1
  264. package/dist/application-spec/parse-application-files/spec/model/defaults.d.ts +7 -2
  265. package/dist/application-spec/parse-application-files/spec/model/defaults.js +1 -1
  266. package/dist/application-spec/parse-application-files/spec/model/index.d.ts +1 -0
  267. package/dist/application-spec/parse-application-files/spec/model/index.js +1 -1
  268. package/dist/application-spec/parse-application-files/spec/model/model-type-resolution.d.ts +10 -0
  269. package/dist/application-spec/parse-application-files/spec/model/model-type-resolution.js +1 -0
  270. package/dist/application-spec/parse-application-files/spec/relations/reference-field-type.d.ts +25 -0
  271. package/dist/application-spec/parse-application-files/spec/relations/reference-field-type.js +1 -0
  272. package/dist/application-spec/parse-application-files/spec/relations/relation-field-mismatch.d.ts +46 -0
  273. package/dist/application-spec/parse-application-files/spec/relations/relation-field-mismatch.js +1 -0
  274. package/dist/application-spec/parse-application-files/spec/relations/relations.d.ts +4 -3
  275. package/dist/application-spec/parse-application-files/spec/relations/relations.js +1 -1
  276. package/dist/application-spec/parse-application-files/spec/sections/assistant/assistant-schema.js +1 -1
  277. package/dist/application-spec/parse-application-files/spec/sections/infra.d.ts +2 -0
  278. package/dist/application-spec/parse-application-files/spec/sections/infra.js +1 -1
  279. package/dist/client/phoenix-api.d.ts +463 -0
  280. package/dist/configurator/ConfiguratorApp.js +1 -1
  281. package/dist/configurator/app-loader-content/DefaultAppLoaderContent.d.ts +2 -0
  282. package/dist/configurator/app-loader-content/DefaultAppLoaderContent.js +5 -0
  283. package/dist/configurator/app-loader-content/app-loader-content-name.d.ts +5 -0
  284. package/dist/configurator/app-loader-content/app-loader-content-name.js +1 -0
  285. package/dist/configurator/app-loader-content/index.d.ts +2 -0
  286. package/dist/configurator/app-loader-content/index.js +1 -0
  287. package/dist/configurator/application-runtime/extensions/create-configurator-extensions.js +1 -1
  288. package/dist/configurator/application-runtime/extensions/selectors.d.ts +3 -1
  289. package/dist/configurator/application-runtime/extensions/selectors.js +1 -1
  290. package/dist/configurator/application-runtime/extensions/systems/assistant-system/assistant-system.d.ts +38 -1
  291. package/dist/configurator/application-runtime/extensions/systems/assistant-system/assistant-system.js +1 -1
  292. package/dist/configurator/application-runtime/extensions/systems/assistant-system/graphql-tools.d.ts +7 -1
  293. package/dist/configurator/application-runtime/extensions/systems/assistant-system/graphql-tools.js +1 -1
  294. package/dist/configurator/application-runtime/extensions/systems/camera-control-system/camera-control-system.d.ts +1 -1
  295. package/dist/configurator/application-runtime/extensions/systems/drag-and-drop-system/drag-and-drop-system.d.ts +3 -3
  296. package/dist/configurator/application-runtime/extensions/systems/graphql-system/close-unclosed-braces.d.ts +12 -0
  297. package/dist/configurator/application-runtime/extensions/systems/graphql-system/close-unclosed-braces.js +1 -0
  298. package/dist/configurator/application-runtime/extensions/systems/graphql-system/graphql-system.d.ts +20 -4
  299. package/dist/configurator/application-runtime/extensions/systems/graphql-system/graphql-system.js +1 -1
  300. package/dist/configurator/application-runtime/extensions/systems/graphql-system/inject-assistant-lenses.d.ts +11 -0
  301. package/dist/configurator/application-runtime/extensions/systems/graphql-system/inject-assistant-lenses.js +1 -0
  302. package/dist/configurator/application-runtime/extensions/systems/layout-system/layout-system.d.ts +2 -2
  303. package/dist/configurator/application-runtime/extensions/systems/layout-system/layout-system.js +1 -1
  304. package/dist/configurator/common/configurator-interface.d.ts +141 -4
  305. package/dist/configurator/common/configurator-interface.js +1 -1
  306. package/dist/configurator/common/index.d.ts +3 -1
  307. package/dist/configurator/common/index.js +1 -1
  308. package/dist/configurator/common/use-reset-camera.d.ts +6 -0
  309. package/dist/configurator/common/use-reset-camera.js +1 -0
  310. package/dist/configurator/configuration-not-found-page/ConfigurationNotFoundPageElement.d.ts +12 -0
  311. package/dist/configurator/configuration-not-found-page/ConfigurationNotFoundPageElement.js +1 -0
  312. package/dist/configurator/configuration-not-found-page/create-configuration-not-found-page.d.ts +9 -0
  313. package/dist/configurator/configuration-not-found-page/create-configuration-not-found-page.js +1 -0
  314. package/dist/configurator/configuration-not-found-page/index.d.ts +2 -0
  315. package/dist/configurator/configuration-not-found-page/index.js +1 -0
  316. package/dist/configurator/configurator-context/ConfiguratorResponsiveProvider.d.ts +12 -0
  317. package/dist/configurator/configurator-context/ConfiguratorResponsiveProvider.js +1 -0
  318. package/dist/configurator/configurator-context/PresetSelectionProvider.js +1 -1
  319. package/dist/configurator/configurator-context/PreviewContextProvider.js +1 -1
  320. package/dist/configurator/configurator-context/ViewportStateSync.d.ts +2 -2
  321. package/dist/configurator/configurator-context/ViewportStateSync.js +1 -1
  322. package/dist/configurator/configurator-context/configurator-hooks/layout-hooks.d.ts +11 -1
  323. package/dist/configurator/configurator-error-page/BuiltInConfiguratorErrorPage.d.ts +6 -0
  324. package/dist/configurator/configurator-error-page/BuiltInConfiguratorErrorPage.js +1 -0
  325. package/dist/configurator/configurator-error-page/ConfiguratorErrorPageElement.d.ts +12 -0
  326. package/dist/configurator/configurator-error-page/ConfiguratorErrorPageElement.js +1 -0
  327. package/dist/configurator/configurator-error-page/create-configurator-error-page.d.ts +9 -0
  328. package/dist/configurator/configurator-error-page/create-configurator-error-page.js +1 -0
  329. package/dist/configurator/configurator-error-page/index.d.ts +3 -0
  330. package/dist/configurator/configurator-error-page/index.js +1 -0
  331. package/dist/configurator/index.d.ts +3 -0
  332. package/dist/configurator/index.js +1 -1
  333. package/dist/configurator/pages/ConfiguratorErrorPage.d.ts +0 -1
  334. package/dist/configurator/pages/ConfiguratorErrorPage.js +1 -1
  335. package/dist/configurator/pages/ConfiguratorNotFoundPage.js +1 -1
  336. package/dist/configurator/pages/DefaultConfiguratorLayout.d.ts +7 -0
  337. package/dist/configurator/pages/DefaultConfiguratorLayout.js +1 -0
  338. package/dist/configurator/pages/DefaultNotAuthenticatedPage.d.ts +8 -0
  339. package/dist/configurator/pages/DefaultNotAuthenticatedPage.js +1 -0
  340. package/dist/configurator/pages/DefaultPresetUi.d.ts +7 -0
  341. package/dist/configurator/pages/DefaultPresetUi.js +1 -0
  342. package/dist/configurator/pages/LoadedConfiguratorDetailPage.js +1 -1
  343. package/dist/configurator/pages/NewConfiguratorPage.js +1 -1
  344. package/dist/configurator/pages/PresetCreationErrorPage.d.ts +1 -1
  345. package/dist/configurator/pages/PresetCreationErrorPage.js +1 -1
  346. package/dist/configurator/pages/RootPage.js +1 -1
  347. package/dist/configurator/pages/configurator-layout-name.d.ts +2 -0
  348. package/dist/configurator/pages/configurator-layout-name.js +1 -0
  349. package/dist/configurator/pages/default-configurator-elements.d.ts +13 -0
  350. package/dist/configurator/pages/default-configurator-elements.js +1 -0
  351. package/dist/configurator/pages/default-elements/built-in-entity-element.d.ts +10 -0
  352. package/dist/configurator/pages/default-elements/built-in-entity-element.js +1 -0
  353. package/dist/configurator/pages/default-elements/built-in-layout-element.d.ts +10 -0
  354. package/dist/configurator/pages/default-elements/built-in-layout-element.js +1 -0
  355. package/dist/configurator/pages/default-elements/domain-control-elements.d.ts +6 -0
  356. package/dist/configurator/pages/default-elements/domain-control-elements.js +1 -0
  357. package/dist/configurator/pages/default-elements/index.d.ts +5 -0
  358. package/dist/configurator/pages/default-elements/index.js +1 -0
  359. package/dist/configurator/pages/default-elements/recipe-panel-elements.d.ts +3 -0
  360. package/dist/configurator/pages/default-elements/recipe-panel-elements.js +1 -0
  361. package/dist/configurator/pages/default-elements/scene-controls/BuiltInAddEntityFab.d.ts +3 -0
  362. package/dist/configurator/pages/default-elements/scene-controls/BuiltInAddEntityFab.js +1 -0
  363. package/dist/configurator/pages/default-elements/scene-controls/BuiltInDeleteEntityFab.d.ts +3 -0
  364. package/dist/configurator/pages/default-elements/scene-controls/BuiltInDeleteEntityFab.js +1 -0
  365. package/dist/configurator/pages/default-elements/scene-controls/BuiltInNavigationHotspot.d.ts +3 -0
  366. package/dist/configurator/pages/default-elements/scene-controls/BuiltInNavigationHotspot.js +1 -0
  367. package/dist/configurator/pages/default-elements/scene-controls/BuiltInSelectionHotspot.d.ts +3 -0
  368. package/dist/configurator/pages/default-elements/scene-controls/BuiltInSelectionHotspot.js +1 -0
  369. package/dist/configurator/pages/default-elements/scene-controls/BuiltInToolMenuFab.d.ts +3 -0
  370. package/dist/configurator/pages/default-elements/scene-controls/BuiltInToolMenuFab.js +1 -0
  371. package/dist/configurator/pages/default-elements/scene-controls/index.d.ts +6 -0
  372. package/dist/configurator/pages/default-elements/scene-controls/index.js +1 -0
  373. package/dist/configurator/pages/default-elements/scene-controls/scene-control-elements.d.ts +6 -0
  374. package/dist/configurator/pages/default-elements/scene-controls/scene-control-elements.js +1 -0
  375. package/dist/configurator/pages/default-elements/sidebar-footer-elements.d.ts +7 -0
  376. package/dist/configurator/pages/default-elements/sidebar-footer-elements.js +1 -0
  377. package/dist/configurator/pages/default-elements/toolbar-elements.d.ts +7 -0
  378. package/dist/configurator/pages/default-elements/toolbar-elements.js +1 -0
  379. package/dist/configurator/pages/error-boundaries/GeneralErrorBoundary.js +1 -1
  380. package/dist/configurator/pages/index.d.ts +1 -0
  381. package/dist/configurator/pages/index.js +1 -1
  382. package/dist/configurator/preset-screen-elements/PresetDeviceNotSupportedElement.d.ts +4 -0
  383. package/dist/configurator/preset-screen-elements/PresetDeviceNotSupportedElement.js +1 -0
  384. package/dist/configurator/preset-screen-elements/PresetPageActionElement.d.ts +4 -0
  385. package/dist/configurator/preset-screen-elements/PresetPageActionElement.js +1 -0
  386. package/dist/configurator/preset-screen-elements/index.d.ts +2 -0
  387. package/dist/configurator/preset-screen-elements/index.js +1 -0
  388. package/dist/configurator/scene/index.d.ts +1 -0
  389. package/dist/configurator/scene/index.js +1 -1
  390. package/dist/configurator/scene/scene-controls/DeleteEntityFab.js +1 -1
  391. package/dist/configurator/scene/scene-controls/SelectionHotspot.js +1 -1
  392. package/dist/configurator/scene/scene-controls/ToolFab.d.ts +4 -0
  393. package/dist/configurator/scene/scene-controls/ToolFab.js +1 -1
  394. package/dist/configurator/scene/scene-controls/hotspot-drag-handle/HotspotDragHandle.d.ts +1 -1
  395. package/dist/configurator/scene/scene-controls/hotspot-drag-handle/HotspotDragSceneHandle.d.ts +1 -1
  396. package/dist/configurator/scene/scene-controls/use-scene-control-tooltip.d.ts +2 -1
  397. package/dist/configurator/scene/scene-entity/dimension-indicators/DimensionIndicator.d.ts +1 -1
  398. package/dist/configurator/scene/scene-entity/dimension-indicators/DimensionIndicatorInternal.d.ts +1 -1
  399. package/dist/configurator/scene/scene-entity/drag-and-drop/shared.d.ts +2 -2
  400. package/dist/configurator/scene/scene-entity/drag-and-drop/use-drag-object.d.ts +1 -1
  401. package/dist/configurator/scene/scene-entity/materials/RemoteReplacedMaterial.js +1 -1
  402. package/dist/configurator/scene/scene-entity/objects/SceneEntityObjectTextDecal.d.ts +1 -1
  403. package/dist/configurator/scene/scene-entity/scene-controls/SceneEntityHtmlHotspots.js +1 -1
  404. package/dist/configurator/toolbar-actions/index.d.ts +3 -0
  405. package/dist/configurator/toolbar-actions/index.js +1 -0
  406. package/dist/configurator/toolbar-actions/use-assistant-panel.d.ts +18 -0
  407. package/dist/configurator/toolbar-actions/use-assistant-panel.js +1 -0
  408. package/dist/configurator/toolbar-actions/use-measurements.d.ts +35 -0
  409. package/dist/configurator/toolbar-actions/use-measurements.js +1 -0
  410. package/dist/configurator/toolbar-actions/use-toolbar-actions.d.ts +100 -0
  411. package/dist/configurator/toolbar-actions/use-toolbar-actions.js +1 -0
  412. package/dist/configurator/toolbar-actions/use-toolbar-help.d.ts +7 -0
  413. package/dist/configurator/toolbar-actions/use-toolbar-help.js +1 -0
  414. package/dist/configurator/ui/assistant/AssistantChips.d.ts +8 -2
  415. package/dist/configurator/ui/assistant/AssistantChips.js +1 -1
  416. package/dist/configurator/ui/assistant/AssistantMarkdown.d.ts +7 -2
  417. package/dist/configurator/ui/assistant/AssistantMarkdown.js +1 -1
  418. package/dist/configurator/ui/assistant/AssistantPanel.js +1 -1
  419. package/dist/configurator/ui/assistant/AssistantThread.js +1 -1
  420. package/dist/configurator/ui/assistant/alert/AssistantAlert.d.ts +8 -0
  421. package/dist/configurator/ui/assistant/alert/AssistantAlert.js +1 -0
  422. package/dist/configurator/ui/assistant/alert/index.d.ts +2 -0
  423. package/dist/configurator/ui/assistant/alert/index.js +1 -0
  424. package/dist/configurator/ui/assistant/alert/remark-alerts.d.ts +10 -0
  425. package/dist/configurator/ui/assistant/alert/remark-alerts.js +1 -0
  426. package/dist/configurator/ui/assistant/entity-link/AssistantEntityLink.d.ts +13 -0
  427. package/dist/configurator/ui/assistant/entity-link/AssistantEntityLink.js +1 -0
  428. package/dist/configurator/ui/assistant/entity-link/entity-link-selection.d.ts +22 -0
  429. package/dist/configurator/ui/assistant/entity-link/entity-link-selection.js +1 -0
  430. package/dist/configurator/ui/assistant/entity-link/entity-link-state.d.ts +27 -0
  431. package/dist/configurator/ui/assistant/entity-link/entity-link-state.js +1 -0
  432. package/dist/configurator/ui/assistant/entity-link/index.d.ts +2 -0
  433. package/dist/configurator/ui/assistant/entity-link/index.js +1 -0
  434. package/dist/configurator/ui/assistant/form/AssistantForm.d.ts +19 -0
  435. package/dist/configurator/ui/assistant/form/AssistantForm.js +1 -0
  436. package/dist/configurator/ui/assistant/form/built-in-form-registry.d.ts +10 -0
  437. package/dist/configurator/ui/assistant/form/built-in-form-registry.js +1 -0
  438. package/dist/configurator/ui/assistant/form/compose-answer.d.ts +12 -0
  439. package/dist/configurator/ui/assistant/form/compose-answer.js +1 -0
  440. package/dist/configurator/ui/assistant/form/describe-build-errors.d.ts +6 -0
  441. package/dist/configurator/ui/assistant/form/describe-build-errors.js +1 -0
  442. package/dist/configurator/ui/assistant/form/form-element-definition.d.ts +14 -0
  443. package/dist/configurator/ui/assistant/form/form-element-definition.js +1 -0
  444. package/dist/configurator/ui/assistant/form/form-model.d.ts +39 -0
  445. package/dist/configurator/ui/assistant/form/form-model.js +1 -0
  446. package/dist/configurator/ui/assistant/form/form-registry.d.ts +31 -0
  447. package/dist/configurator/ui/assistant/form/form-registry.js +8 -0
  448. package/dist/configurator/ui/assistant/form/form-state.d.ts +4 -0
  449. package/dist/configurator/ui/assistant/form/form-state.js +1 -0
  450. package/dist/configurator/ui/assistant/form/index.d.ts +2 -0
  451. package/dist/configurator/ui/assistant/form/index.js +1 -0
  452. package/dist/configurator/ui/assistant/form/parse-form-block.d.ts +10 -0
  453. package/dist/configurator/ui/assistant/form/parse-form-block.js +1 -0
  454. package/dist/configurator/ui/assistant/form/read-form-attributes.d.ts +13 -0
  455. package/dist/configurator/ui/assistant/form/read-form-attributes.js +1 -0
  456. package/dist/configurator/ui/assistant/form-elements/FormCard.d.ts +9 -0
  457. package/dist/configurator/ui/assistant/form-elements/FormCard.js +1 -0
  458. package/dist/configurator/ui/assistant/form-elements/FormConfirm.d.ts +9 -0
  459. package/dist/configurator/ui/assistant/form-elements/FormConfirm.js +1 -0
  460. package/dist/configurator/ui/assistant/form-elements/FormGroup.d.ts +6 -0
  461. package/dist/configurator/ui/assistant/form-elements/FormGroup.js +1 -0
  462. package/dist/configurator/ui/assistant/form-elements/FormNumber.d.ts +9 -0
  463. package/dist/configurator/ui/assistant/form-elements/FormNumber.js +1 -0
  464. package/dist/configurator/ui/assistant/form-elements/FormOptions.d.ts +6 -0
  465. package/dist/configurator/ui/assistant/form-elements/FormOptions.js +1 -0
  466. package/dist/configurator/ui/assistant/form-elements/FormReply.d.ts +6 -0
  467. package/dist/configurator/ui/assistant/form-elements/FormReply.js +1 -0
  468. package/dist/configurator/ui/assistant/form-elements/FormSwatch.d.ts +10 -0
  469. package/dist/configurator/ui/assistant/form-elements/FormSwatch.js +1 -0
  470. package/dist/configurator/ui/assistant/form-elements/FormText.d.ts +6 -0
  471. package/dist/configurator/ui/assistant/form-elements/FormText.js +1 -0
  472. package/dist/configurator/ui/assistant/form-elements/clamp-form-number.d.ts +10 -0
  473. package/dist/configurator/ui/assistant/form-elements/clamp-form-number.js +1 -0
  474. package/dist/configurator/ui/assistant/form-elements/form-element-props.d.ts +38 -0
  475. package/dist/configurator/ui/assistant/form-elements/form-element-props.js +1 -0
  476. package/dist/configurator/ui/assistant/form-elements/index.d.ts +9 -0
  477. package/dist/configurator/ui/assistant/form-elements/index.js +1 -0
  478. package/dist/configurator/ui/assistant/reference-link/AssistantReferenceLink.d.ts +16 -0
  479. package/dist/configurator/ui/assistant/reference-link/AssistantReferenceLink.js +1 -0
  480. package/dist/configurator/ui/assistant/reference-link/assistant-link-target.d.ts +34 -0
  481. package/dist/configurator/ui/assistant/reference-link/assistant-link-target.js +1 -0
  482. package/dist/configurator/ui/assistant/reference-link/assistant-reference-details.d.ts +25 -0
  483. package/dist/configurator/ui/assistant/reference-link/assistant-reference-details.js +1 -0
  484. package/dist/configurator/ui/assistant/reference-link/index.d.ts +3 -0
  485. package/dist/configurator/ui/assistant/reference-link/index.js +1 -0
  486. package/dist/configurator/ui/assistant/reference-link/reference-styles.d.ts +12 -0
  487. package/dist/configurator/ui/assistant/reference-link/reference-styles.js +1 -0
  488. package/dist/configurator/ui/assistant/reference-link/use-assistant-reference-details.d.ts +8 -0
  489. package/dist/configurator/ui/assistant/reference-link/use-assistant-reference-details.js +1 -0
  490. package/dist/configurator/ui/assistant/resource-image/AssistantImage.d.ts +9 -0
  491. package/dist/configurator/ui/assistant/resource-image/AssistantImage.js +1 -0
  492. package/dist/configurator/ui/assistant/resource-image/index.d.ts +3 -0
  493. package/dist/configurator/ui/assistant/resource-image/index.js +1 -0
  494. package/dist/configurator/ui/assistant/resource-image/resource-path.d.ts +2 -0
  495. package/dist/configurator/ui/assistant/resource-image/resource-path.js +1 -0
  496. package/dist/configurator/ui/assistant/resource-image/use-resource-image-url.d.ts +5 -0
  497. package/dist/configurator/ui/assistant/resource-image/use-resource-image-url.js +1 -0
  498. package/dist/configurator/ui/assistant/streamed-markdown.d.ts +4 -2
  499. package/dist/configurator/ui/assistant/streamed-markdown.js +2 -2
  500. package/dist/configurator/ui/assistant/thread-items.d.ts +8 -1
  501. package/dist/configurator/ui/assistant/thread-items.js +1 -1
  502. package/dist/configurator/ui/assistant/use-follow-stream.js +1 -1
  503. package/dist/configurator/ui/configurator-layout/sidebar-keys/index.d.ts +1 -0
  504. package/dist/configurator/ui/configurator-layout/sidebar-keys/index.js +1 -0
  505. package/dist/configurator/ui/configurator-layout/sidebar-keys/sidebar-keys.d.ts +11 -0
  506. package/dist/configurator/ui/configurator-layout/sidebar-keys/sidebar-keys.js +1 -0
  507. package/dist/configurator/ui/configurator-layout/slots/canvas/LayoutCanvas.js +1 -1
  508. package/dist/configurator/ui/configurator-layout/slots/canvas/SharedCanvas.js +1 -1
  509. package/dist/configurator/ui/configurator-layout/slots/desktop-sidebar/DesktopSidebar.d.ts +101 -0
  510. package/dist/configurator/ui/configurator-layout/slots/desktop-sidebar/DesktopSidebar.js +16 -0
  511. package/dist/configurator/ui/configurator-layout/slots/desktop-sidebar/index.d.ts +1 -0
  512. package/dist/configurator/ui/configurator-layout/slots/desktop-sidebar/index.js +1 -0
  513. package/dist/configurator/ui/configurator-layout/slots/mobile-tabs/use-mobile-tabs.d.ts +1 -1
  514. package/dist/configurator/ui/configurator-layout/slots/mobile-tabs/use-mobile-tabs.js +1 -1
  515. package/dist/configurator/ui/configurator-layout/slots/services/InvariantViolations.d.ts +4 -4
  516. package/dist/configurator/ui/configurator-layout/slots/services/InvariantViolations.js +1 -1
  517. package/dist/configurator/ui/configurator-layout/slots/services/Services.js +1 -1
  518. package/dist/configurator/ui/configurator-layout/slots/services/SideEffects.d.ts +3 -6
  519. package/dist/configurator/ui/configurator-layout/slots/services/SideEffects.js +1 -1
  520. package/dist/configurator/ui/configurator-layout/slots/sidebar-tabs/use-sidebar-tabs.d.ts +1 -1
  521. package/dist/configurator/ui/configurator-layout/slots/sidebar-tabs/use-sidebar-tabs.js +1 -1
  522. package/dist/configurator/ui/configurator-layout/slots/slots.d.ts +1 -0
  523. package/dist/configurator/ui/configurator-layout/slots/slots.js +1 -1
  524. package/dist/configurator/ui/configurator-layout/universal/DesktopLayout.d.ts +0 -74
  525. package/dist/configurator/ui/configurator-layout/universal/DesktopLayout.js +5 -20
  526. package/dist/configurator/ui/configurator-layout/universal/DesktopPreview.js +1 -1
  527. package/dist/configurator/ui/configurator-layout/universal/MobileLayout.js +4 -4
  528. package/dist/configurator/ui/configurator-layout/universal/MobilePreview.js +1 -1
  529. package/dist/configurator/ui/configurator-layout/universal/use-layout-scene-safe-area.d.ts +47 -0
  530. package/dist/configurator/ui/configurator-layout/universal/use-layout-scene-safe-area.js +1 -0
  531. package/dist/configurator/ui/configurator-layout/universal/use-scene-safe-area.d.ts +11 -26
  532. package/dist/configurator/ui/configurator-layout/universal/use-scene-safe-area.js +1 -1
  533. package/dist/configurator/ui/legacy/layout/common/CommonFinalizeButton.js +1 -1
  534. package/dist/configurator/ui/legacy/layout/common/CommonSummaryButton.js +1 -1
  535. package/dist/configurator/ui/legacy/layout/common/CommonTopNavigation.js +1 -1
  536. package/dist/configurator/ui/legacy/layout/common/ReactiveInterfaceLayout.js +1 -1
  537. package/dist/configurator/ui/legacy/layout/common/ResponsiveFinalizeButton.js +1 -1
  538. package/dist/configurator/ui/legacy/layout/common/SummaryReadLayout.js +1 -1
  539. package/dist/configurator/ui/legacy/layout/simple/SimpleOwnerLayout.js +1 -1
  540. package/dist/configurator/ui/legacy/layout/simple/SimpleTopNavigation.js +1 -1
  541. package/dist/configurator/ui/legacy/layout/steps/StepsNavigation.d.ts +2 -2
  542. package/dist/configurator/ui/legacy/layout/steps/StepsNavigation.js +1 -1
  543. package/dist/configurator/ui/legacy/layout/steps/StepsOwnerLayout.js +1 -1
  544. package/dist/configurator/ui/legacy/layout/steps/StepsSidebarFooter.js +1 -1
  545. package/dist/configurator/ui/legacy/layout/tabs/TabsOwnerLayout.js +1 -1
  546. package/dist/configurator/ui/legacy/toolbar/common/DimensionUnitSelector.js +1 -1
  547. package/dist/configurator/ui/legacy/toolbar/common/MeasurementsIndicatorsSwitch.js +1 -1
  548. package/dist/configurator/ui/legacy/toolbar/desktop-toolbar/FullscreenToolbarAction.js +1 -1
  549. package/dist/configurator/ui/legacy/toolbar/desktop-toolbar/HelpToolbarAction.js +1 -1
  550. package/dist/configurator/ui/legacy/toolbar/desktop-toolbar/MeasurementsToolbarAction.js +1 -1
  551. package/dist/configurator/ui/legacy/toolbar/desktop-toolbar/UndoRedoToolbarGroup.js +1 -1
  552. package/dist/configurator/ui/phoenix-layout-elements/AppLoader.js +2 -6
  553. package/dist/configurator/ui/phoenix-layout-elements/AssistantToolbarButton.js +1 -1
  554. package/dist/configurator/ui/phoenix-layout-elements/EnterFullscreenToolbarButton.js +1 -1
  555. package/dist/configurator/ui/phoenix-layout-elements/ExitFullscreenToolbarButton.js +1 -1
  556. package/dist/configurator/ui/phoenix-layout-elements/HelpToolbarButton.js +1 -1
  557. package/dist/configurator/ui/phoenix-layout-elements/LanguageMenuAction.js +1 -1
  558. package/dist/configurator/ui/phoenix-layout-elements/LanguageToolbarButton.js +1 -1
  559. package/dist/configurator/ui/phoenix-layout-elements/LayoutCustomOwnerUi.d.ts +1 -0
  560. package/dist/configurator/ui/phoenix-layout-elements/LayoutCustomOwnerUi.js +1 -1
  561. package/dist/configurator/ui/phoenix-layout-elements/LayoutCustomReadUi.d.ts +1 -0
  562. package/dist/configurator/ui/phoenix-layout-elements/LayoutCustomReadUi.js +1 -1
  563. package/dist/configurator/ui/phoenix-layout-elements/MeasurementsMenuAction.js +1 -1
  564. package/dist/configurator/ui/phoenix-layout-elements/MeasurementsToolbarButton.js +1 -1
  565. package/dist/configurator/ui/phoenix-layout-elements/RedoToolbarButton.js +1 -1
  566. package/dist/configurator/ui/phoenix-layout-elements/ShareToolbarButton.js +1 -1
  567. package/dist/configurator/ui/phoenix-layout-elements/UndoToolbarButton.js +1 -1
  568. package/dist/configurator/ui/phoenix-layout-elements/header/common/back-button/use-go-back-action.js +1 -1
  569. package/dist/configurator/ui/phoenix-layout-elements/header/common/horizontal-tabs/DesktopHorizontalTabs.js +1 -1
  570. package/dist/configurator/ui/phoenix-layout-elements/header/common/step-navigation/DesktopNavigationSteps.d.ts +1 -1
  571. package/dist/configurator/ui/phoenix-layout-elements/header/common/step-navigation/DesktopNavigationSteps.js +1 -1
  572. package/dist/configurator/ui/phoenix-layout-elements/header/common/step-navigation/StepsNavigation.d.ts +2 -8
  573. package/dist/configurator/ui/phoenix-layout-elements/header/common/step-navigation/StepsNavigation.js +1 -1
  574. package/dist/configurator/ui/phoenix-layout-elements/measurements/DimensionUnitSelector.js +1 -1
  575. package/dist/configurator/ui/phoenix-layout-elements/measurements/MeasurementsIndicatorsSwitch.js +1 -1
  576. package/dist/configurator/ui/phoenix-layout-elements/share/ShareModal.js +1 -1
  577. package/dist/configurator/ui/phoenix-layout-elements/share/use-share.d.ts +7 -8
  578. package/dist/configurator/ui/phoenix-layout-elements/share/use-share.js +1 -1
  579. package/dist/configurator/ui/phoenix-layout-elements/sidebar-footer/basic/BasicFinalizeButton.js +1 -1
  580. package/dist/configurator/ui/phoenix-layout-elements/sidebar-footer/common/CustomFinalizeButton.js +1 -1
  581. package/dist/configurator/ui/phoenix-layout-elements/sidebar-footer/common/EnterSummaryButton.js +1 -1
  582. package/dist/configurator/ui/phoenix-layout-elements/sidebar-footer/common/FinalizeActions.js +1 -1
  583. package/dist/configurator/ui/phoenix-layout-elements/sidebar-footer/common/NextStepButton.js +1 -1
  584. package/dist/configurator/ui/phoenix-layout-elements/sidebar-footer/common/PreviousStepButton.js +1 -1
  585. package/dist/configurator/ui/preset-layout/CategoryPresetUi.js +1 -1
  586. package/dist/configurator/ui/preset-layout/PresetUi.d.ts +4 -0
  587. package/dist/configurator/ui/preset-layout/PresetUi.js +1 -1
  588. package/dist/configurator/ui/save-message-snackbars/SaveMessageSnackbars.d.ts +10 -0
  589. package/dist/configurator/ui/save-message-snackbars/SaveMessageSnackbars.js +1 -0
  590. package/dist/configurator/ui/save-message-snackbars/index.d.ts +1 -0
  591. package/dist/configurator/ui/save-message-snackbars/index.js +1 -0
  592. package/dist/docs/complex-use-cases/filtered-controls-with-fix-dialog.mdx +16 -19
  593. package/dist/docs/complex-use-cases/focus-mode.mdx +2 -0
  594. package/dist/docs/complex-use-cases/sketching.mdx +0 -38
  595. package/dist/docs/controls/select-attribute/cardselect.mdx +9 -13
  596. package/dist/docs/controls/select-child-entity/cardselect.mdx +1 -0
  597. package/dist/docs/dimensions/3d-scene-integration/dimension-indicators.mdx +2 -2
  598. package/dist/docs/dimensions/3d-scene-integration/editable-angle-indicator.mdx +1 -1
  599. package/dist/docs/dimensions/3d-scene-integration/editable-distance-dimension-indicator.mdx +1 -1
  600. package/dist/docs/dimensions/3d-scene-integration/list-selector-dimension-indicator.mdx +1 -1
  601. package/dist/docs/drag-and-drop/drag-handle.mdx +1 -1
  602. package/dist/docs/drag-and-drop/hotspot-handle.mdx +1 -1
  603. package/dist/docs/drag-and-drop/planes.mdx +1 -1
  604. package/dist/docs/drag-and-drop/rotatable.mdx +2 -2
  605. package/dist/docs/fabs/basic.mdx +6 -2
  606. package/dist/docs/index.json +42 -1
  607. package/dist/docs/integrations/woocommerce/local-development.mdx +1 -1
  608. package/dist/docs/layouts/custom-layout.mdx +2437 -0
  609. package/dist/docs/layouts/header/fixed.mdx +2 -2
  610. package/dist/docs/layouts/header/floating.mdx +2 -2
  611. package/dist/docs/layouts/sidebar/in-a-custom-layout.mdx +380 -0
  612. package/dist/docs/layouts/sidebar-footer/basic.mdx +32 -77
  613. package/dist/docs/other-features/client-side-rendering/declarative.mdx +1 -1
  614. package/dist/docs/other-features/error-5xx.mdx +1 -1
  615. package/dist/docs/other-features/navigation-hotspot.mdx +2 -0
  616. package/dist/docs/other-features/not-found-404.mdx +1 -1
  617. package/dist/docs/other-features/side-effects.mdx +8 -11
  618. package/dist/docs/other-features/transformers.mdx +4 -0
  619. package/dist/docs/other-features/violation-messages.mdx +52 -56
  620. package/dist/docs/phoenix/application-states.mdx +9 -7
  621. package/dist/docs/phoenix/clerk-sign-in.mdx +1 -1
  622. package/dist/docs/phoenix/components.mdx +6 -0
  623. package/dist/docs/phoenix/configurator-interface.mdx +400 -81
  624. package/dist/docs/phoenix/deployments.mdx +2 -6
  625. package/dist/docs/phoenix/domain-model.mdx +6 -0
  626. package/dist/docs/phoenix/finalization.mdx +1 -1
  627. package/dist/docs/phoenix/getting-started.mdx +7 -4
  628. package/dist/docs/phoenix/layout-slots.mdx +116 -0
  629. package/dist/docs/phoenix/localization.mdx +10 -6
  630. package/dist/docs/phoenix/migration-guide.mdx +24 -11
  631. package/dist/docs/phoenix/phoenix-cli.mdx +88 -44
  632. package/dist/docs/phoenix/project-structure.mdx +80 -36
  633. package/dist/docs/phoenix/quickstart.mdx +9 -9
  634. package/dist/docs/phoenix/sdk-builder-workflow.mdx +9 -9
  635. package/dist/docs/phoenix/testing.mdx +148 -0
  636. package/dist/docs/phoenix/webhook-membership.mdx +10 -9
  637. package/dist/docs/phoenix/webhooks.mdx +23 -6
  638. package/dist/docs/selection-and-highlight/hotspots.mdx +2 -0
  639. package/dist/domain/admin-domain/implementation/common-admin-expressions.d.ts +26 -11
  640. package/dist/domain/admin-domain/implementation/common-admin-publish.d.ts +1 -2
  641. package/dist/domain/admin-domain/index.js +1 -1
  642. package/dist/domain/application/GetApplicationWrapperHandler.d.ts +2 -2
  643. package/dist/domain/application/GetThemeHandler.d.ts +1 -1
  644. package/dist/domain/application/GetWebComponentOptions.d.ts +1 -1
  645. package/dist/domain/application/application-config.d.ts +8 -5
  646. package/dist/domain/application/assistant/assistant-fields.d.ts +12 -0
  647. package/dist/domain/application/assistant/assistant-fields.js +1 -0
  648. package/dist/domain/application/assistant/assistant-manifest.d.ts +9 -1
  649. package/dist/domain/application/assistant/assistant-resolved-manifest.d.ts +38 -2
  650. package/dist/domain/application/assistant/assistant-resolved-manifest.js +1 -1
  651. package/dist/domain/application/assistant/build-assistant-lenses.d.ts +14 -0
  652. package/dist/domain/application/assistant/build-assistant-lenses.js +5 -0
  653. package/dist/domain/application/assistant/build-assistant-manifest.js +1 -1
  654. package/dist/domain/application/assistant/create-assistant-execution-schema.d.ts +32 -0
  655. package/dist/domain/application/assistant/create-assistant-execution-schema.js +1 -0
  656. package/dist/domain/application/assistant/form/assistant-form-elements.d.ts +163 -0
  657. package/dist/domain/application/assistant/form/assistant-form-elements.js +1 -0
  658. package/dist/domain/application/assistant/form/assistant-resource-path.d.ts +10 -0
  659. package/dist/domain/application/assistant/form/assistant-resource-path.js +1 -0
  660. package/dist/domain/application/assistant/form/get-assistant-form-value-attribute.d.ts +6 -0
  661. package/dist/domain/application/assistant/form/get-assistant-form-value-attribute.js +1 -0
  662. package/dist/domain/application/assistant/form/index.d.ts +4 -0
  663. package/dist/domain/application/assistant/form/index.js +1 -0
  664. package/dist/domain/application/assistant/generate-assistant-prompt.d.ts +3 -0
  665. package/dist/domain/application/assistant/generate-assistant-prompt.js +1 -1
  666. package/dist/domain/application/assistant/index.d.ts +7 -1
  667. package/dist/domain/application/assistant/index.js +1 -1
  668. package/dist/domain/application/assistant/session-setup/AssistantSetupHandler.d.ts +20 -0
  669. package/dist/domain/application/assistant/session-setup/AssistantSetupHandler.js +1 -0
  670. package/dist/domain/application/assistant/session-setup/apply-assistant-setup.d.ts +10 -0
  671. package/dist/domain/application/assistant/session-setup/apply-assistant-setup.js +1 -0
  672. package/dist/domain/application/assistant/session-setup/assistant-setup-manifest.d.ts +48 -0
  673. package/dist/domain/application/assistant/session-setup/assistant-setup-manifest.js +1 -0
  674. package/dist/domain/application/assistant/session-setup/create-session-assistant.d.ts +15 -0
  675. package/dist/domain/application/assistant/session-setup/create-session-assistant.js +1 -0
  676. package/dist/domain/application/assistant/session-setup/index.d.ts +4 -0
  677. package/dist/domain/application/assistant/session-setup/index.js +1 -0
  678. package/dist/domain/application/assistant-recipe-groups.d.ts +4 -2
  679. package/dist/domain/application/configurator-builder.d.ts +5 -2
  680. package/dist/domain/application/configurator-builder.js +1 -1
  681. package/dist/domain/application/create-initial-published-data.d.ts +6 -7
  682. package/dist/domain/application/index.d.ts +0 -4
  683. package/dist/domain/application/index.js +1 -1
  684. package/dist/domain/application/published-data/DataRowValidatorHandler.d.ts +1 -1
  685. package/dist/domain/application/published-data/FilterPublishedChunksHandler.d.ts +1 -1
  686. package/dist/domain/application/published-data/MapPublishedChunkedDataHandler.d.ts +1 -1
  687. package/dist/domain/application/published-data/MapPublishedRevisionDataHandler.d.ts +1 -1
  688. package/dist/domain/application/published-data/SheetValidatorHandler.d.ts +1 -1
  689. package/dist/domain/application/published-data/map-published-chunked-data.d.ts +1 -1
  690. package/dist/domain/application/published-data/map-published-data.d.ts +7 -3
  691. package/dist/domain/core/component/domain-component-optic.d.ts +11 -19
  692. package/dist/domain/core/component/domain-component-optic.js +2 -2
  693. package/dist/domain/core/component/legacy-filter.d.ts +2 -17
  694. package/dist/domain/core/component/system-component-filter.d.ts +36 -18
  695. package/dist/domain/core/expression/constant-expressions.d.ts +16 -8
  696. package/dist/domain/core/expression/constant-expressions.js +1 -1
  697. package/dist/domain/core/expression/custom-expression.d.ts +17 -4
  698. package/dist/domain/core/expression/custom-expression.js +1 -1
  699. package/dist/domain/core/expression/expression.d.ts +1 -2
  700. package/dist/domain/core/invariant/custom-invariants.d.ts +6 -14
  701. package/dist/domain/core/invariant/invariants.d.ts +1 -4
  702. package/dist/domain/core/invariant/violation.d.ts +50 -2
  703. package/dist/domain/core/invariant/violation.js +1 -1
  704. package/dist/domain/core/model/model.d.ts +1 -1
  705. package/dist/domain/core/recipe/recipes.d.ts +18 -50
  706. package/dist/domain/core/recipe/recipes.js +1 -1
  707. package/dist/domain/core/relation/all-of-type-relation.d.ts +8 -21
  708. package/dist/domain/core/relation/all-of-type-relation.js +1 -1
  709. package/dist/domain/core/relation/direct-relation.d.ts +13 -24
  710. package/dist/domain/core/relation/index.d.ts +0 -1
  711. package/dist/domain/core/relation/indirect-relation.d.ts +12 -67
  712. package/dist/domain/core/relation/indirect-relation.js +1 -1
  713. package/dist/domain/core/relation/relation-factory.d.ts +19 -15
  714. package/dist/domain/core/relation/relation-factory.js +1 -1
  715. package/dist/domain/core/schema/extended-schema-validator.js +1 -1
  716. package/dist/domain/core/state/migrations.d.ts +14 -45
  717. package/dist/domain/core/state/migrations.js +1 -1
  718. package/dist/domain/core/state/state.d.ts +1 -1
  719. package/dist/domain/domain-builder.d.ts +1 -1
  720. package/dist/domain/domain-builder.js +1 -1
  721. package/dist/domain/domain-context/action-system/action-system.d.ts +1 -1
  722. package/dist/domain/domain-context/action-system/action-system.js +1 -1
  723. package/dist/domain/domain-context/action-system/index.d.ts +1 -0
  724. package/dist/domain/domain-context/action-system/index.js +1 -0
  725. package/dist/domain/domain-context/analytics-system/index.d.ts +2 -0
  726. package/dist/domain/domain-context/analytics-system/index.js +1 -0
  727. package/dist/domain/domain-context/create-transformer.d.ts +1 -1
  728. package/dist/domain/domain-context/dimension-system/dimension-system.d.ts +2 -2
  729. package/dist/domain/domain-context/dimension-system/dimension-system.js +1 -1
  730. package/dist/domain/domain-context/dimension-system/index.d.ts +1 -0
  731. package/dist/domain/domain-context/dimension-system/index.js +1 -0
  732. package/dist/domain/domain-context/domain-context-systems.d.ts +7 -7
  733. package/dist/domain/domain-context/index.d.ts +8 -17
  734. package/dist/domain/domain-context/index.js +1 -1
  735. package/dist/domain/domain-context/navigation-system/index.d.ts +3 -0
  736. package/dist/domain/domain-context/navigation-system/index.js +1 -0
  737. package/dist/domain/domain-context/navigation-system/navigation-system.d.ts +2 -3
  738. package/dist/domain/domain-context/navigation-system/navigation-system.js +1 -1
  739. package/dist/domain/domain-context/navigation-system/selection-transformers.d.ts +1 -1
  740. package/dist/domain/domain-context/recipe-system/index.d.ts +1 -0
  741. package/dist/domain/domain-context/recipe-system/index.js +1 -0
  742. package/dist/domain/domain-context/recipe-system/recipe-cooker-system.d.ts +1 -1
  743. package/dist/domain/domain-context/recipe-system/recipe-cooker-system.js +1 -1
  744. package/dist/domain/domain-context/relation-transformers/cascade-deletes.d.ts +2 -2
  745. package/dist/domain/domain-context/relation-transformers/cascade-ref-pruning.d.ts +2 -2
  746. package/dist/domain/domain-context/relation-transformers/create-entity-refs.d.ts +2 -2
  747. package/dist/domain/domain-context/relation-transformers/index.d.ts +4 -0
  748. package/dist/domain/domain-context/relation-transformers/index.js +1 -0
  749. package/dist/domain/domain-context/relation-transformers/replace-refs.d.ts +2 -2
  750. package/dist/domain/domain-context/store-system/index.d.ts +4 -0
  751. package/dist/domain/domain-context/store-system/index.js +1 -0
  752. package/dist/domain/domain-context/store-system/reconcile-projected-entities.js +1 -1
  753. package/dist/domain/domain-context/store-system/store-system.d.ts +1 -3
  754. package/dist/domain/domain-context/store-system/store-system.js +2 -2
  755. package/dist/domain/domain-context/store-system/system-state.d.ts +1 -1
  756. package/dist/domain/domain-context/transformers/actions-builder.js +1 -1
  757. package/dist/domain/domain-context/transformers/auto-snap-transformer.d.ts +5 -7
  758. package/dist/domain/domain-context/transformers/auto-snap-transformer.js +1 -1
  759. package/dist/domain/domain-context/transformers/chain-builder.d.ts +1 -1
  760. package/dist/domain/domain-context/transformers/context.d.ts +1 -1
  761. package/dist/domain/domain-context/transformers/context.js +1 -1
  762. package/dist/domain/domain-context/transformers/entity-builder.js +1 -1
  763. package/dist/domain/domain-context/transformers/index.d.ts +1 -1
  764. package/dist/domain/domain-context/transformers/index.js +1 -1
  765. package/dist/domain/domain-context/transformers/when-builder.d.ts +2 -3
  766. package/dist/domain/domain-context/transformers/when-builder.js +1 -1
  767. package/dist/domain/domain-context/undo-system.d.ts +29 -2
  768. package/dist/domain/domain-context/undo-system.js +1 -1
  769. package/dist/domain/domain-runtime/access/selectors.d.ts +9 -0
  770. package/dist/domain/domain-runtime/access/selectors.js +1 -1
  771. package/dist/domain/domain-runtime/access/types.d.ts +2 -0
  772. package/dist/domain/domain-runtime/access/types.js +1 -1
  773. package/dist/domain/domain-runtime/domain-context/domain-context.js +1 -1
  774. package/dist/domain/domain-runtime/domain-context/selectors.d.ts +17 -22
  775. package/dist/domain/domain-runtime/domain-context/selectors.js +1 -1
  776. package/dist/domain/domain-runtime/domain-context/types.d.ts +4 -1
  777. package/dist/domain/domain-runtime/domain-runtime.d.ts +76 -60
  778. package/dist/domain/domain-runtime/errors/implementation-error-collector.d.ts +19 -0
  779. package/dist/domain/domain-runtime/errors/implementation-error-collector.js +1 -0
  780. package/dist/domain/domain-runtime/errors/implementation-error.d.ts +46 -0
  781. package/dist/domain/domain-runtime/errors/implementation-error.js +1 -0
  782. package/dist/domain/domain-runtime/errors/implementation-errors.d.ts +13 -0
  783. package/dist/domain/domain-runtime/errors/implementation-errors.js +1 -0
  784. package/dist/domain/domain-runtime/errors/index.d.ts +4 -0
  785. package/dist/domain/domain-runtime/errors/index.js +1 -0
  786. package/dist/domain/domain-runtime/errors/to-implementation-errors.d.ts +10 -0
  787. package/dist/domain/domain-runtime/errors/to-implementation-errors.js +1 -0
  788. package/dist/domain/domain-runtime/index.d.ts +1 -0
  789. package/dist/domain/domain-runtime/index.js +1 -1
  790. package/dist/domain/domain-runtime/spec/create-violation-expressions.d.ts +24 -0
  791. package/dist/domain/domain-runtime/spec/create-violation-expressions.js +1 -0
  792. package/dist/domain/domain-runtime/spec/index.d.ts +2 -5
  793. package/dist/domain/domain-runtime/spec/index.js +1 -1
  794. package/dist/domain/domain-runtime/spec/initialize.d.ts +11 -0
  795. package/dist/domain/domain-runtime/spec/initialize.js +1 -1
  796. package/dist/domain/{application → domain-runtime/spec/module-checks}/element-registration.d.ts +14 -13
  797. package/dist/domain/domain-runtime/spec/module-checks/element-registration.js +1 -0
  798. package/dist/domain/{application → domain-runtime/spec/module-checks}/handler-registration.d.ts +1 -1
  799. package/dist/domain/domain-runtime/spec/module-checks/handler-registration.js +1 -0
  800. package/dist/domain/domain-runtime/spec/module-checks/index.d.ts +8 -0
  801. package/dist/domain/domain-runtime/spec/module-checks/index.js +1 -0
  802. package/dist/domain/{project-modules → domain-runtime/spec/module-checks}/project-modules.d.ts +8 -1
  803. package/dist/domain/domain-runtime/spec/module-checks/project-modules.js +1 -0
  804. package/dist/domain/domain-runtime/spec/{resolve-action-modules.d.ts → module-checks/resolve-action-modules.d.ts} +2 -2
  805. package/dist/domain/domain-runtime/spec/module-checks/resolve-action-modules.js +1 -0
  806. package/dist/domain/domain-runtime/spec/{resolve-component-optic-modules.d.ts → module-checks/resolve-component-optic-modules.d.ts} +2 -2
  807. package/dist/domain/domain-runtime/spec/module-checks/resolve-component-optic-modules.js +1 -0
  808. package/dist/domain/domain-runtime/spec/{resolve-expression-modules.d.ts → module-checks/resolve-expression-modules.d.ts} +2 -2
  809. package/dist/domain/domain-runtime/spec/module-checks/resolve-expression-modules.js +1 -0
  810. package/dist/domain/domain-runtime/spec/module-checks/resolve-imported-transformers.d.ts +22 -0
  811. package/dist/domain/domain-runtime/spec/module-checks/resolve-imported-transformers.js +1 -0
  812. package/dist/domain/domain-runtime/spec/module-checks/resolve-invariant-modules.d.ts +6 -0
  813. package/dist/domain/domain-runtime/spec/module-checks/resolve-invariant-modules.js +1 -0
  814. package/dist/domain/domain-runtime/spec/selectors.d.ts +5 -6
  815. package/dist/domain/domain-runtime/spec/selectors.js +1 -1
  816. package/dist/domain/domain-runtime/spec/types.d.ts +5 -2
  817. package/dist/domain/extensions/attribute-switch.d.ts +1 -1
  818. package/dist/domain/extensions/attribute-switch.js +1 -1
  819. package/dist/domain/extensions/canvas-config.d.ts +1 -1
  820. package/dist/domain/extensions/client-side-image.d.ts +2 -2
  821. package/dist/domain/extensions/client-side-image.js +1 -1
  822. package/dist/domain/extensions/common/angle-indicator-schema.d.ts +2 -2
  823. package/dist/domain/extensions/common/dimension-indicator-schema.d.ts +2 -2
  824. package/dist/domain/extensions/editable-angle-indicator.d.ts +1 -1
  825. package/dist/domain/extensions/editable-distance-dimension-indicator.d.ts +1 -1
  826. package/dist/domain/extensions/editable-offset-indicator.d.ts +1 -1
  827. package/dist/domain/extensions/editable-offset-indicator.js +1 -1
  828. package/dist/domain/extensions/fit-selection-orthographic-camera-component.js +1 -1
  829. package/dist/domain/extensions/fit-selection-perspective-camera-component.js +1 -1
  830. package/dist/domain/extensions/horizontal-tabs.d.ts +2 -2
  831. package/dist/domain/extensions/list-selector-dimension-indicator.d.ts +1 -1
  832. package/dist/domain/extensions/navigation-steps.d.ts +2 -2
  833. package/dist/domain/extensions/offset-indicator.js +1 -1
  834. package/dist/domain/extensions/rotation-handle.d.ts +2 -2
  835. package/dist/domain/extensions/save-template-thumbnail.d.ts +2 -2
  836. package/dist/domain/extensions/save-template-thumbnail.js +1 -1
  837. package/dist/domain/extensions/scene-entity-animation.js +1 -1
  838. package/dist/domain/index.d.ts +0 -1
  839. package/dist/domain/mocks/create-mock-domain-context.d.ts +1 -1
  840. package/dist/domain/mocks/create-mock-domain-runtime-services.d.ts +1 -1
  841. package/dist/domain/mocks/create-mock-domain-runtime.d.ts +28 -19
  842. package/dist/domain/mocks/create-mock-domain-runtime.js +1 -1
  843. package/dist/domain/mocks/create-mock-domain.d.ts +1 -1
  844. package/dist/domain/mocks/create-mock-domain.js +1 -1
  845. package/dist/domain/mocks/create-mock-state.d.ts +2 -2
  846. package/dist/domain/mocks/create-test-application-config.d.ts +59 -0
  847. package/dist/domain/mocks/create-test-application-config.js +1 -0
  848. package/dist/domain/mocks/index.d.ts +1 -0
  849. package/dist/domain/mocks/index.js +1 -1
  850. package/dist/domain/projections/blender-projections/blender-projections.d.ts +1 -2
  851. package/dist/domain/projections/blender-projections/camera.d.ts +2 -2
  852. package/dist/domain/projections/collision-projections.d.ts +1 -1
  853. package/dist/domain/projections/composition-projections.d.ts +1 -1
  854. package/dist/domain/projections/constraint-projections.d.ts +1 -1
  855. package/dist/domain/projections/position-projections.d.ts +1 -1
  856. package/dist/domain/projections/projected-entities-projections.d.ts +1 -1
  857. package/dist/domain/projections/snapping-projections.d.ts +1 -1
  858. package/dist/domain/projections/validation-projections.d.ts +2 -2
  859. package/dist/domain/sketching/sketching-projections.d.ts +1 -1
  860. package/dist/domain/system-components/application-config.d.ts +2 -2
  861. package/dist/domain/system-components/child-entity-selection.js +1 -1
  862. package/dist/domain/system-components/collision-box-geometry.d.ts +4 -2
  863. package/dist/domain/system-components/collision-geometry.d.ts +4 -2
  864. package/dist/domain/system-components/collision-point-geometry.d.ts +4 -2
  865. package/dist/domain/system-components/common/material-override-schema.d.ts +2 -2
  866. package/dist/domain/system-components/common/recipes.d.ts +21 -3
  867. package/dist/domain/system-components/common/recipes.js +1 -1
  868. package/dist/domain/system-components/common/scene-entity-control-schema.d.ts +3 -0
  869. package/dist/domain/system-components/common/scene-entity-control-schema.js +1 -1
  870. package/dist/domain/system-components/constraint.d.ts +10 -23
  871. package/dist/domain/system-components/drag-handle.d.ts +1 -1
  872. package/dist/domain/system-components/drag-handle.js +1 -1
  873. package/dist/domain/system-components/fit-entity-orthographic-camera-component.js +1 -1
  874. package/dist/domain/system-components/fit-entity-perspective-camera-component.js +1 -1
  875. package/dist/domain/system-components/fit-root-orthographic-camera-component.js +1 -1
  876. package/dist/domain/system-components/fit-root-perspective-camera-component.js +1 -1
  877. package/dist/domain/system-components/hotspot-drag-handle.d.ts +1 -1
  878. package/dist/domain/system-components/hotspot-drag-handle.js +1 -1
  879. package/dist/domain/system-components/material-swatch.js +1 -1
  880. package/dist/domain/system-components/scene-entity-material-override.d.ts +1 -1
  881. package/dist/domain/system-components/scene-entity-object-material-override.d.ts +1 -1
  882. package/dist/domain/system-components/scene-entity-object-text-decal.d.ts +1 -1
  883. package/dist/domain/system-components/scene-entity-object-transimissive-material-override.d.ts +1 -1
  884. package/dist/domain/system-components/scene-entity-transimissive-material-override.d.ts +1 -1
  885. package/dist/domain/system-components/static-orthographic-camera-component.js +1 -1
  886. package/dist/domain/system-components/static-perspective-camera-component.js +1 -1
  887. package/dist/domain/utils/eval-cache.d.ts +1 -1
  888. package/dist/domain/utils/map-nested-object.d.ts +1 -1
  889. package/dist/editor/Editor.d.ts +7 -0
  890. package/dist/editor/Editor.js +1 -1
  891. package/dist/editor/domain-editors/use-implementation-files.d.ts +1 -2
  892. package/dist/editor/mocks/CreateMockYaml.js +2 -2
  893. package/dist/editor/mocks/EditorMockContext.d.ts +2 -0
  894. package/dist/editor/mocks/EditorMockContext.js +1 -1
  895. package/dist/globals/index.d.ts +2 -0
  896. package/dist/i18n/locales/cs/messages.js +1 -1
  897. package/dist/i18n/locales/da/messages.js +1 -1
  898. package/dist/i18n/locales/de/messages.js +1 -1
  899. package/dist/i18n/locales/de-AT/messages.js +1 -1
  900. package/dist/i18n/locales/en/messages.js +1 -1
  901. package/dist/i18n/locales/en-AU/messages.js +1 -1
  902. package/dist/i18n/locales/en-GB/messages.js +1 -1
  903. package/dist/i18n/locales/es/messages.js +1 -1
  904. package/dist/i18n/locales/fr/messages.js +1 -1
  905. package/dist/i18n/locales/hu/messages.js +1 -1
  906. package/dist/i18n/locales/it/messages.js +1 -1
  907. package/dist/i18n/locales/nl/messages.js +1 -1
  908. package/dist/i18n/locales/pl/messages.js +1 -1
  909. package/dist/i18n/locales/pt/messages.js +1 -1
  910. package/dist/i18n/locales/ro/messages.js +1 -1
  911. package/dist/i18n/locales/sk/messages.js +1 -1
  912. package/dist/i18n/locales/tr/messages.js +1 -1
  913. package/dist/legacy/domain-cli/gen/configurator-builder.js +13 -12
  914. package/dist/legacy/domain-cli/gen/constant-expressions.js +1 -3
  915. package/dist/legacy/domain-cli/gen/defaults.js +1 -7
  916. package/dist/legacy/domain-cli/gen/implementation.js +7 -11
  917. package/dist/legacy/domain-cli/gen/invariants.js +3 -4
  918. package/dist/legacy/domain-cli/gen/relations.js +1 -1
  919. package/dist/legacy/domain-cli/utils/cache.d.ts +1 -1
  920. package/dist/legacy/domain-cli/utils/cache.js +1 -1
  921. package/dist/legacy/domain-spec/__generated/domain-schema.d.ts +160 -148
  922. package/dist/legacy/phoenix-cli/project-gen/generators/file-templates/agents/claude-md.d.ts +1 -1
  923. package/dist/legacy/phoenix-cli/project-gen/generators/file-templates/agents/cursor-rules.d.ts +1 -1
  924. package/dist/legacy/phoenix-cli/project-gen/generators/file-templates/agents/shared-sdk-content.d.ts +1 -1
  925. package/dist/legacy/phoenix-cli/project-gen/generators/file-templates/agents/shared-sdk-content.js +7 -0
  926. package/dist/legacy/phoenix-cli/project-gen/generators/file-templates/domain-index.js +17 -15
  927. package/dist/legacy/phoenix-cli/project-gen/generators/file-templates/frontend-admin.js +15 -14
  928. package/dist/legacy/phoenix-cli/project-gen/generators/file-templates/frontend-configurator.js +14 -12
  929. package/dist/legacy/phoenix-cli/project-gen/generators/file-templates/frontend-embedded-admin.js +14 -13
  930. package/dist/legacy/phoenix-cli/project-gen/generators/file-templates/frontend-embedded-configurator.js +13 -11
  931. package/dist/phoenix/application-spec/application-spec-builder.d.ts +0 -2
  932. package/dist/phoenix/application-spec/application-spec-builder.js +1 -1
  933. package/dist/phoenix/application-spec/generate-application-spec-project.d.ts +0 -2
  934. package/dist/phoenix/application-spec/generate-application-spec-project.js +2 -2
  935. package/dist/phoenix/application-spec/generate-application-spec-story.js +2 -2
  936. package/dist/phoenix/application-spec/generate-project-files.d.ts +0 -2
  937. package/dist/phoenix/application-spec/project-files.js +1 -1
  938. package/dist/phoenix/bin.d.ts +2 -0
  939. package/dist/phoenix/bin.js +2 -0
  940. package/dist/phoenix/check-configs/built-in-eslint-config.d.ts +9 -0
  941. package/dist/phoenix/check-configs/built-in-eslint-config.js +1 -0
  942. package/dist/phoenix/check-configs/eslint-config.d.ts +10 -0
  943. package/dist/phoenix/check-configs/eslint-config.js +1 -0
  944. package/dist/phoenix/check-configs/index.d.ts +8 -0
  945. package/dist/phoenix/check-configs/index.js +1 -0
  946. package/dist/phoenix/check-configs/typescript-project.d.ts +5 -0
  947. package/dist/phoenix/check-configs/typescript-project.js +1 -0
  948. package/dist/phoenix/cli.d.ts +0 -1
  949. package/dist/phoenix/cli.js +1 -2
  950. package/dist/phoenix/commands/build.js +1 -1
  951. package/dist/phoenix/commands/check.js +1 -1
  952. package/dist/phoenix/commands/clean.js +1 -1
  953. package/dist/phoenix/commands/deploy.js +2 -2
  954. package/dist/phoenix/commands/deps/deps.d.ts +73 -0
  955. package/dist/phoenix/commands/deps/deps.js +3 -0
  956. package/dist/phoenix/commands/deps/index.d.ts +1 -0
  957. package/dist/phoenix/commands/deps/index.js +1 -0
  958. package/dist/phoenix/commands/deps/sdk-manifest.d.ts +12 -0
  959. package/dist/phoenix/commands/deps/sdk-manifest.js +1 -0
  960. package/dist/phoenix/commands/dev.js +5 -5
  961. package/dist/phoenix/commands/fix.js +1 -1
  962. package/dist/phoenix/commands/index.d.ts +1 -0
  963. package/dist/phoenix/commands/index.js +1 -1
  964. package/dist/phoenix/commands/init.d.ts +17 -5
  965. package/dist/phoenix/commands/init.js +1 -1
  966. package/dist/phoenix/commands/link.js +1 -1
  967. package/dist/phoenix/commands/prettier.js +1 -1
  968. package/dist/phoenix/commands/sync.js +1 -1
  969. package/dist/phoenix/commands/unlink.js +1 -1
  970. package/dist/phoenix/services/application-spec-project-watcher.d.ts +2 -2
  971. package/dist/phoenix/services/application-spec-project-watcher.js +3 -3
  972. package/dist/phoenix/services/lingui.d.ts +8 -0
  973. package/dist/phoenix/services/lingui.js +1 -1
  974. package/dist/phoenix/services/source-archive.d.ts +1 -0
  975. package/dist/phoenix/services/source-archive.js +1 -1
  976. package/dist/phoenix/services/swc.js +1 -1
  977. package/dist/phoenix/services/vite-config.js +1 -1
  978. package/dist/phoenix/utils/git/index.d.ts +1 -0
  979. package/dist/phoenix/utils/git/index.js +1 -0
  980. package/dist/phoenix/utils/git/is-inside-git-repository.d.ts +6 -0
  981. package/dist/phoenix/utils/git/is-inside-git-repository.js +1 -0
  982. package/dist/phoenix/utils/index.d.ts +5 -2
  983. package/dist/phoenix/utils/index.js +1 -1
  984. package/dist/phoenix/utils/node-version/index.d.ts +1 -0
  985. package/dist/phoenix/utils/node-version/index.js +1 -0
  986. package/dist/phoenix/utils/node-version/supported-node-version.d.ts +12 -0
  987. package/dist/phoenix/utils/node-version/supported-node-version.js +4 -0
  988. package/dist/phoenix/utils/package-info.d.ts +0 -9
  989. package/dist/phoenix/utils/package-info.js +1 -1
  990. package/dist/phoenix/utils/package-manager/index.d.ts +2 -0
  991. package/dist/phoenix/utils/package-manager/index.js +1 -0
  992. package/dist/phoenix/utils/package-manager/package-manager-commands.d.ts +19 -0
  993. package/dist/phoenix/utils/package-manager/package-manager-commands.js +1 -0
  994. package/dist/phoenix/utils/package-manager/pnpm-project.d.ts +9 -0
  995. package/dist/phoenix/utils/package-manager/pnpm-project.js +1 -0
  996. package/dist/phoenix/utils/run-command.d.ts +11 -0
  997. package/dist/phoenix/utils/run-command.js +1 -1
  998. package/dist/phoenix/utils/sdk-tool/index.d.ts +1 -0
  999. package/dist/phoenix/utils/sdk-tool/index.js +1 -0
  1000. package/dist/phoenix/utils/sdk-tool/resolve-sdk-tool-bin.d.ts +15 -0
  1001. package/dist/phoenix/utils/sdk-tool/resolve-sdk-tool-bin.js +1 -0
  1002. package/dist/{configurator/common → react-sdk/application-runtime/common-services/analytics}/frontend-analytics.d.ts +6 -0
  1003. package/dist/react-sdk/application-runtime/common-services/analytics/frontend-analytics.js +1 -0
  1004. package/dist/react-sdk/application-runtime/common-services/analytics/index.d.ts +1 -0
  1005. package/dist/react-sdk/application-runtime/common-services/analytics/index.js +1 -1
  1006. package/dist/react-sdk/application-runtime/hooks/use-access-service.d.ts +2 -0
  1007. package/dist/react-sdk/application-runtime/mocks/create-mock-application-runtime.js +1 -1
  1008. package/dist/react-sdk/application-runtime/routing/access-service.d.ts +1 -0
  1009. package/dist/react-sdk/application-runtime/runtime/create-application-runtime.d.ts +53 -36
  1010. package/dist/react-sdk/application-runtime/runtime/create-application-runtime.js +1 -1
  1011. package/dist/react-sdk/domain-application-context/DomainLifecycleBoundary.js +1 -1
  1012. package/dist/react-sdk/domain-context/common-hooks/index.d.ts +8 -0
  1013. package/dist/react-sdk/domain-context/common-hooks/index.js +1 -0
  1014. package/dist/react-sdk/domain-context/common-hooks/use-configurator-messages.d.ts +41 -0
  1015. package/dist/react-sdk/domain-context/common-hooks/use-configurator-messages.js +1 -0
  1016. package/dist/react-sdk/domain-context/common-hooks/use-domain-context.d.ts +9 -9
  1017. package/dist/react-sdk/domain-context/component-hooks/index.d.ts +1 -0
  1018. package/dist/react-sdk/domain-context/component-hooks/index.js +1 -0
  1019. package/dist/react-sdk/domain-context/component-hooks/use-component.js +1 -1
  1020. package/dist/react-sdk/domain-context/entity-hooks/use-domain-entity-state.js +1 -1
  1021. package/dist/react-sdk/domain-context/entity-hooks/use-entity-price.js +1 -1
  1022. package/dist/react-sdk/domain-context/entity-hooks/use-root-entity-id.js +1 -1
  1023. package/dist/react-sdk/domain-context/entity-hooks/use-root-entity-state.js +1 -1
  1024. package/dist/react-sdk/domain-context/index.d.ts +8 -1
  1025. package/dist/react-sdk/domain-context/index.js +1 -1
  1026. package/dist/react-sdk/domain-context/system-hooks/composition-hooks.js +1 -1
  1027. package/dist/react-sdk/domain-context/system-hooks/dimension-hooks.js +1 -1
  1028. package/dist/react-sdk/domain-context/system-hooks/generate-share-link-hooks.d.ts +8 -0
  1029. package/dist/react-sdk/domain-context/system-hooks/generate-share-link-hooks.js +1 -0
  1030. package/dist/react-sdk/domain-context/system-hooks/hover-hooks.js +1 -1
  1031. package/dist/react-sdk/domain-context/system-hooks/locale-switch-hooks.d.ts +24 -0
  1032. package/dist/react-sdk/domain-context/system-hooks/locale-switch-hooks.js +1 -0
  1033. package/dist/react-sdk/domain-context/system-hooks/navigation-hooks.d.ts +11 -0
  1034. package/dist/react-sdk/domain-context/system-hooks/navigation-hooks.js +1 -1
  1035. package/dist/react-sdk/domain-context/system-hooks/selection-hooks.js +1 -1
  1036. package/dist/react-sdk/domain-context/system-hooks/share-links-hooks.d.ts +32 -0
  1037. package/dist/react-sdk/domain-context/system-hooks/share-links-hooks.js +1 -0
  1038. package/dist/react-sdk/domain-context/system-hooks/step-navigation-hooks.d.ts +57 -0
  1039. package/dist/react-sdk/domain-context/system-hooks/step-navigation-hooks.js +1 -0
  1040. package/dist/react-sdk/domain-context/system-hooks/tab-navigation-hooks.d.ts +61 -0
  1041. package/dist/react-sdk/domain-context/system-hooks/tab-navigation-hooks.js +1 -0
  1042. package/dist/react-sdk/domain-context/system-hooks/undo-redo-hooks.d.ts +20 -0
  1043. package/dist/react-sdk/domain-context/system-hooks/undo-redo-hooks.js +1 -0
  1044. package/dist/react-sdk/domain-controls/hooks/use-angle-dimension.d.ts +1 -1
  1045. package/dist/react-sdk/elements/configurator-error-page-props.d.ts +20 -0
  1046. package/dist/react-sdk/elements/configurator-error-page-props.js +1 -0
  1047. package/dist/react-sdk/elements/index.d.ts +1 -0
  1048. package/dist/react-sdk/handlers/FinalizeActionRunner.d.ts +13 -0
  1049. package/dist/react-sdk/handlers/FinalizeActionRunner.js +1 -0
  1050. package/dist/react-sdk/handlers/FinalizeActionsHost.d.ts +10 -0
  1051. package/dist/react-sdk/handlers/FinalizeActionsHost.js +1 -0
  1052. package/dist/react-sdk/handlers/FinalizeActionsProvider.d.ts +11 -0
  1053. package/dist/react-sdk/handlers/FinalizeActionsProvider.js +1 -0
  1054. package/dist/react-sdk/handlers/finalize-actions-context.d.ts +6 -0
  1055. package/dist/react-sdk/handlers/finalize-actions-context.js +1 -0
  1056. package/dist/react-sdk/handlers/finalize-actions-store.d.ts +23 -0
  1057. package/dist/react-sdk/handlers/finalize-actions-store.js +1 -0
  1058. package/dist/react-sdk/handlers/index.d.ts +6 -0
  1059. package/dist/react-sdk/handlers/index.js +1 -1
  1060. package/dist/react-sdk/handlers/use-finalize-action.d.ts +32 -0
  1061. package/dist/react-sdk/handlers/use-finalize-action.js +1 -0
  1062. package/dist/react-sdk/handlers/use-finalize-actions.d.ts +53 -0
  1063. package/dist/react-sdk/handlers/use-finalize-actions.js +1 -0
  1064. package/dist/react-sdk/index.d.ts +2 -0
  1065. package/dist/react-sdk/index.js +1 -1
  1066. package/dist/react-sdk/loading-state/loading-state-manager.d.ts +5 -0
  1067. package/dist/react-sdk/loading-state/loading-state-manager.js +1 -1
  1068. package/dist/react-sdk/responsive-state/ResponsiveStateProvider.d.ts +25 -0
  1069. package/dist/react-sdk/responsive-state/ResponsiveStateProvider.js +1 -0
  1070. package/dist/react-sdk/responsive-state/canvas-padding.d.ts +14 -0
  1071. package/dist/react-sdk/responsive-state/canvas-padding.js +1 -0
  1072. package/dist/react-sdk/responsive-state/index.d.ts +5 -0
  1073. package/dist/react-sdk/responsive-state/index.js +1 -0
  1074. package/dist/react-sdk/responsive-state/responsive-state-manager.d.ts +111 -0
  1075. package/dist/react-sdk/responsive-state/responsive-state-manager.js +1 -0
  1076. package/dist/react-sdk/responsive-state/use-responsive-state-manager.d.ts +10 -0
  1077. package/dist/react-sdk/responsive-state/use-responsive-state-manager.js +1 -0
  1078. package/dist/react-sdk/responsive-state/use-responsive-state.d.ts +11 -0
  1079. package/dist/react-sdk/responsive-state/use-responsive-state.js +1 -0
  1080. package/dist/react-sdk/scene-control-elements/AddEntityFabElement.d.ts +36 -0
  1081. package/dist/react-sdk/scene-control-elements/AddEntityFabElement.js +1 -0
  1082. package/dist/react-sdk/scene-control-elements/DeleteEntityFabElement.d.ts +44 -0
  1083. package/dist/react-sdk/scene-control-elements/DeleteEntityFabElement.js +1 -0
  1084. package/dist/react-sdk/scene-control-elements/NavigationHotspotElement.d.ts +38 -0
  1085. package/dist/react-sdk/scene-control-elements/NavigationHotspotElement.js +1 -0
  1086. package/dist/react-sdk/scene-control-elements/SelectionHotspotElement.d.ts +30 -0
  1087. package/dist/react-sdk/scene-control-elements/SelectionHotspotElement.js +1 -0
  1088. package/dist/react-sdk/scene-control-elements/ToolMenuFabElement.d.ts +30 -0
  1089. package/dist/react-sdk/scene-control-elements/ToolMenuFabElement.js +1 -0
  1090. package/dist/react-sdk/scene-control-elements/create-add-entity-fab.d.ts +9 -0
  1091. package/dist/react-sdk/scene-control-elements/create-add-entity-fab.js +1 -0
  1092. package/dist/react-sdk/scene-control-elements/create-delete-entity-fab.d.ts +9 -0
  1093. package/dist/react-sdk/scene-control-elements/create-delete-entity-fab.js +1 -0
  1094. package/dist/react-sdk/scene-control-elements/create-navigation-hotspot.d.ts +10 -0
  1095. package/dist/react-sdk/scene-control-elements/create-navigation-hotspot.js +1 -0
  1096. package/dist/react-sdk/scene-control-elements/create-selection-hotspot.d.ts +9 -0
  1097. package/dist/react-sdk/scene-control-elements/create-selection-hotspot.js +1 -0
  1098. package/dist/react-sdk/scene-control-elements/create-tool-menu-fab.d.ts +9 -0
  1099. package/dist/react-sdk/scene-control-elements/create-tool-menu-fab.js +1 -0
  1100. package/dist/react-sdk/scene-control-elements/index.d.ts +11 -0
  1101. package/dist/react-sdk/scene-control-elements/index.js +1 -0
  1102. package/dist/react-sdk/scene-control-elements/scene-control-tooltip-visibility.d.ts +5 -0
  1103. package/dist/react-sdk/scene-control-elements/scene-control-tooltip-visibility.js +1 -0
  1104. package/dist/react-sdk/session/NotAuthenticatedPage.d.ts +4 -0
  1105. package/dist/react-sdk/session/NotAuthenticatedPage.js +1 -1
  1106. package/dist/ui-sdk/icons/__generated/Lightbulb.d.ts +3 -0
  1107. package/dist/ui-sdk/icons/__generated/Lightbulb.js +1 -0
  1108. package/dist/ui-sdk/icons/__generated/XCircle.d.ts +3 -0
  1109. package/dist/ui-sdk/icons/__generated/XCircle.js +1 -0
  1110. package/dist/ui-sdk/icons/__generated/index.d.ts +4 -0
  1111. package/dist/ui-sdk/icons/__generated/index.js +1 -1
  1112. package/dist/ui-sdk/icons/icons-registry.js +1 -1
  1113. package/dist/ui-sdk/responsive-application/ResponsiveApplicationProvider.d.ts +9 -0
  1114. package/dist/ui-sdk/responsive-application/ResponsiveApplicationProvider.js +1 -1
  1115. package/dist/ui-sdk/responsive-application/index.d.ts +1 -0
  1116. package/dist/ui-sdk/responsive-application/responsive-state-store.d.ts +57 -0
  1117. package/dist/ui-sdk/responsive-application/responsive-state-store.js +1 -0
  1118. package/dist/ui-sdk/responsive-application/use-store-responsive-info.d.ts +7 -0
  1119. package/dist/ui-sdk/responsive-application/use-store-responsive-info.js +1 -0
  1120. package/dist/ui-sdk/theme/types.d.ts +1 -1
  1121. package/dist/webhook/builders/webhook-builder.js +1 -1
  1122. package/package.json +48 -36
  1123. package/schema/domain-spec.json +1201 -217
  1124. package/dist/application-spec/generate-application/code/templates/env-ci.d.ts +0 -1
  1125. package/dist/application-spec/generate-application/code/templates/env-ci.js +0 -25
  1126. package/dist/application-spec/generate-application/code/templates/env-example.d.ts +0 -1
  1127. package/dist/application-spec/generate-application/code/templates/env-example.js +0 -94
  1128. package/dist/application-spec/generate-application/code/templates/nvmrc.d.ts +0 -1
  1129. package/dist/application-spec/generate-application/code/templates/nvmrc.js +0 -2
  1130. package/dist/application-spec/generate-application/code/templates/package-json.d.ts +0 -10
  1131. package/dist/application-spec/generate-application/code/templates/package-json.js +0 -1
  1132. package/dist/application-spec/generate-application/code/templates/prettier-ignore.d.ts +0 -1
  1133. package/dist/application-spec/generate-application/code/templates/prettier-ignore.js +0 -6
  1134. package/dist/application-spec/generate-application/code/templates/private-assets-readme.d.ts +0 -1
  1135. package/dist/application-spec/generate-application/code/templates/private-assets-readme.js +0 -24
  1136. package/dist/application-spec/generate-application/code/templates/public-assets-readme.d.ts +0 -1
  1137. package/dist/application-spec/generate-application/code/templates/public-assets-readme.js +0 -24
  1138. package/dist/application-spec/generate-application/code/templates/readme.d.ts +0 -1
  1139. package/dist/application-spec/generate-application/code/templates/readme.js +0 -23
  1140. package/dist/application-spec/generate-application/code/templates/skills/agents-md.d.ts +0 -1
  1141. package/dist/application-spec/generate-application/code/templates/skills/agents-md.js +0 -2
  1142. package/dist/application-spec/generate-application/code/templates/webhook-implementation.d.ts +0 -1
  1143. package/dist/application-spec/generate-application/code/templates/webhook-implementation.js +0 -7
  1144. package/dist/configurator/common/frontend-analytics.js +0 -1
  1145. package/dist/configurator/ui/phoenix-layout-elements/language/use-locale-options.d.ts +0 -4
  1146. package/dist/configurator/ui/phoenix-layout-elements/language/use-locale-options.js +0 -1
  1147. package/dist/configurator/ui/phoenix-layout-elements/measurements/use-measurements-visibility.d.ts +0 -4
  1148. package/dist/configurator/ui/phoenix-layout-elements/measurements/use-measurements-visibility.js +0 -1
  1149. package/dist/domain/application/element-registration.js +0 -1
  1150. package/dist/domain/application/handler-registration.js +0 -1
  1151. package/dist/domain/application/resolve-imported-transformers.d.ts +0 -23
  1152. package/dist/domain/application/resolve-imported-transformers.js +0 -1
  1153. package/dist/domain/application/resource-builder.d.ts +0 -13
  1154. package/dist/domain/application/resource-builder.js +0 -1
  1155. package/dist/domain/core/relation/relation-implementation.d.ts +0 -7
  1156. package/dist/domain/domain-runtime/spec/invariant-builder.d.ts +0 -61
  1157. package/dist/domain/domain-runtime/spec/invariant-builder.js +0 -1
  1158. package/dist/domain/domain-runtime/spec/resolve-action-modules.js +0 -1
  1159. package/dist/domain/domain-runtime/spec/resolve-component-optic-modules.js +0 -1
  1160. package/dist/domain/domain-runtime/spec/resolve-expression-modules.js +0 -1
  1161. package/dist/domain/domain-runtime/spec/resolve-invariant-modules.d.ts +0 -6
  1162. package/dist/domain/domain-runtime/spec/resolve-invariant-modules.js +0 -1
  1163. package/dist/domain/project-modules/index.d.ts +0 -1
  1164. package/dist/domain/project-modules/index.js +0 -1
  1165. package/dist/domain/project-modules/project-modules.js +0 -1
  1166. package/dist/phoenix/commands/generate-project-files.d.ts +0 -6
  1167. package/dist/phoenix/commands/generate-project-files.js +0 -1
  1168. /package/dist/{domain/core/relation/relation-implementation.js → application-spec/core/expressions/relation-expression-params.js} +0 -0
  1169. /package/dist/application-spec/{core → enhanced-json}/eval-code-uses-self.d.ts +0 -0
  1170. /package/dist/application-spec/{core → enhanced-json}/eval-code-uses-self.js +0 -0
  1171. /package/dist/application-spec/{core → enhanced-json}/eval-to-constant.js +0 -0
@@ -2,7 +2,7 @@ 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
4
  import { type AuthorizedPhoenixApiClient } from '#package/client';
5
- import type { DomainContextSelectors, DomainServicesSelectors, InitializableSystem, SpecSelectors } from '#package/domain';
5
+ import type { AssistantManifest, 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
@@ -125,11 +127,31 @@ export declare class AssistantSystem implements InitializableSystem {
125
127
  private readonly _recorder;
126
128
  /** The recorder's subscription to the committed emissions of the store; made by the first `initialize()`. */
127
129
  private _recording;
130
+ /**
131
+ * The tool call of every `apply` by the state it committed or held, for as long as the state
132
+ * lives: an undone state that the undo history dropped is forgotten with it.
133
+ *
134
+ * Accepted: a commit the project's `registerIsUndoable` keeps out of the history never becomes a
135
+ * step, so the row of its `apply` never offers Undo.
136
+ */
137
+ private readonly _applyToolCallIds;
138
+ private readonly _undoTipToolCallId;
128
139
  constructor(_context: AssistantSystemContext);
129
140
  /** The conversation. It never completes, and holds the empty chat whenever no chat is active. */
130
141
  readonly chat$: ObservableWithLastValue<AssistantChatSnapshot>;
131
142
  /** The state of the built-in panel. It never completes. */
132
143
  readonly panel$: ObservableWithLastValue<AssistantPanelSnapshot>;
144
+ /**
145
+ * The `apply` tool call whose committed state is the step of the undo history the configuration is
146
+ * at; nothing when that step is not a change of the assistant. It never completes.
147
+ */
148
+ readonly undoTipToolCallId$: ObservableWithLastValue<string | undefined>;
149
+ /**
150
+ * The manifest the initialized session runs, narrowed by the project's setup handler: what the
151
+ * agent can read, so the panel reads recipes and options the way the agent does. `null` while the
152
+ * assistant is off for the session or its setup failed.
153
+ */
154
+ getSessionManifest: () => AssistantManifest | null;
133
155
  /**
134
156
  * A new configuration load: the chat of the previous one is deactivated and both observables go
135
157
  * back to their empty values. An activation that is still held outlives it and gets the chat of
@@ -225,6 +247,15 @@ export declare class AssistantSystem implements InitializableSystem {
225
247
  * server is therefore gone from the thread and has to be written again.
226
248
  */
227
249
  reloadThread: () => void;
250
+ /**
251
+ * Undoes the changes of the given `apply` tool calls, one undo step at a time, while the step the
252
+ * configuration is at is one of them. A change the user made in between stops it, so it is never
253
+ * taken back; the non-undoable commits made on top of an undone change go with it, as with the
254
+ * toolbar's undo.
255
+ *
256
+ * Accepted: like the toolbar's undo, it does not check the session mode; only `apply` requires `owner`.
257
+ */
258
+ undoToolCalls: (toolCallIds: ReadonlySet<string>) => void;
228
259
  setOpen: (open: boolean) => void;
229
260
  setInputFocused: (isInputFocused: boolean) => void;
230
261
  /**
@@ -235,6 +266,12 @@ export declare class AssistantSystem implements InitializableSystem {
235
266
  private _findRefusedMessageIndex;
236
267
  private _sendOn;
237
268
  private _resume;
269
+ /**
270
+ * The `apply` call whose committed state is the step the configuration is at. Nothing at the bottom
271
+ * of the history, where nothing can be undone: that step was not made by a change it could take back.
272
+ */
273
+ private _findTipToolCallId;
274
+ private _refreshUndoTip;
238
275
  private _committedState;
239
276
  private _patchPanel;
240
277
  /**
@@ -1 +1 @@
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,specSelectors: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.getAssistant()?.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=()=>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)=>i.active?e.execute?.(t,s):_})),m=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(m)&&(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))}}),f=!1,v=()=>{f||(f=!0,this._finishing.delete(p),m.dispose())},p={client:m,configurationId:s,generation:i,authorizedClient:r,getConnection:n,dispose:v};this._current=p,m.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
+ 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 o}from"./change-recorder.js";import{createApplyClientTool as l,createQueryClientTool as h}from"./graphql-tools.js";let d=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}),c=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(d);_panel=new i(c);_activation=null;_current=null;_finishing=new Set;_olderThreadId=null;_resuming=null;_refused=null;_firstAttempt=null;_chain={};_loadingThreadId=null;_recorder;_recording=null;_applyToolCallIds=new WeakMap;_undoTipToolCallId=new i(void 0);constructor(e){this._context=e;let{configuratorExtensionSelectors:t,domainContextSelectors:i,domainServicesSelectors:s,getAssistantSetup:a}=e;this._recorder=new o({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()),rememberCommit:(e,t)=>{this._applyToolCallIds.set(t,e),this._refreshUndoTip()}};this._tools=[n(),h(r),l(r)],i.getUndoSystem().tip$.subscribe(this._refreshUndoTip)}chat$=this._chat;panel$=this._panel;undoTipToolCallId$=this._undoTipToolCallId;getSessionManifest=()=>this._context.getAssistantSetup().manifest;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(c),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()};undoToolCalls=e=>{let t=this._context.domainContextSelectors.getUndoSystem(),i=()=>{let t=this._findTipToolCallId();return void 0!==t&&e.has(t)};for(;i();)t.undo()};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({...d,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}};_findTipToolCallId=()=>{let e=this._context.domainContextSelectors.getUndoSystem(),t=e.tip$.value?.committedState;return void 0!==t&&e.canUndo()?this._applyToolCallIds.get(t):void 0};_refreshUndoTip=()=>{let e=this._findTipToolCallId();e!==this._undoTipToolCallId.value&&this._undoTipToolCallId.next(e)};_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)},o=e=>{if(!i.active)return;let t={...this._chat.value,...e};a(t,this._chat.value)||this._chat.next(t)},l=async(e,t)=>{let s=await fetch(e,t).finally(()=>o({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")),o({failedStatus:s.ok?void 0:s.status,...null!=a&&{isContinuable:"false"!==a,hasEarlierThread:null!==this._olderThreadId}}),s},h=async()=>({headers:await n().headers(),fetchClient:l}),d=t(()=>n().url,h),c=t(()=>`${n().url}/runs`,h),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:{...d,joinRun:c.joinRun},persistence:!0,history:{pageSize:50},tools:u,onMessagesChange:e=>o({messages:e}),onLoadingChange:e=>{let t=i.active&&this._chat.value.isLoading;o({isLoading:e}),!e&&g(f)&&(i.active?t&&!this._panel.value.open&&this._patchPanel({hasUnreadReply:!0}):p())},onErrorChange:e=>{i.active&&e!==this._chat.value.error&&(!e||-1===this._findRefusedMessageIndex(v))&&(o({error:e}),e&&this._context.domainServicesSelectors.getLogger().error("The assistant request failed",{status:this._chat.value.failedStatus},e))}}),m=!1,p=()=>{m||(m=!0,this._finishing.delete(v),f.dispose())},v={client:f,configurationId:s,generation:i,authorizedClient:r,getConnection:n,dispose:p};this._current=v,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!==d&&this._chat.next(d),e};_endChat=()=>{let e=this._retireChat();if(e){if(!e.client.getIsLoading()&&g(e.client))return void e.dispose();this._finishing.add(e)}}}
@@ -20,6 +20,11 @@ export interface AssistantToolDependencies {
20
20
  readonly getActiveMode: () => DomainMode;
21
21
  /** Forgets the changes recorded for the next change record, so it never lists what the agent itself changed. */
22
22
  readonly clearChanges: () => void;
23
+ /**
24
+ * Remembers the state an `apply` call committed or held for the user's approval, so the panel can
25
+ * tell while that state is the step of the undo history the configuration is at.
26
+ */
27
+ readonly rememberCommit: (toolCallId: string, state: DomainState<DomainEntity<string>>) => void;
23
28
  }
24
29
  /**
25
30
  * Browser implementation of the assistant's `query` tool: prepares the operations from the
@@ -93,7 +98,8 @@ export declare const createQueryClientTool: (dependencies: AssistantToolDependen
93
98
  * `GraphQLSystem.execute`, which commits their changes as one undo step, and returns its result,
94
99
  * including why nothing was committed when a commit was held or lost to a conflict. A commit clears
95
100
  * the recorded changes; a held one does not, so it shows in the next change record once the user
96
- * approves it. Only an owner
101
+ * approves it. The state it committed or held is remembered under the id of the call, so the chip
102
+ * row of the call can undo it. Only an owner
97
103
  * session may change the configuration; the check lives here and not in the `GraphQLSystem`, whose
98
104
  * other caller, the editor panel, has its own rules.
99
105
  */
@@ -1 +1 @@
1
- import{AssistantGraphQLToolInput as e,applyTool as t,queryTool as o}from"@salsita-ai/contracts/assistant";let a=e=>({results:[],committed:!1,message:e,sideEffects:[]}),i=e=>JSON.parse(JSON.stringify(e)),s=t=>{let o=e.safeParse(t);if(!o.success){let e=o.error.issues.map(e=>`${e.path.join(".")}: ${e.message}`).join("; ");return{ok:!1,refusal:a(`Nothing was run, because the tool input is not a list of operations (${e}). Send { "operations": [{ "query": "<one GraphQL operation>" }] } with at least one item.`)}}return{ok:!0,operations:o.data.operations.map(({query:e,variables:t,operationName:o})=>({document:e,variables:t??void 0,operationName:o??void 0}))}};export const createQueryClientTool=e=>o.client(async t=>{let o=s(t);if(!o.ok)return o.refusal;let n=e.getStoreSystem();if(!n.isInitialized)return a("Nothing was run, because the configuration is not loaded yet, so there is no state to query. Call the tool again once the configurator has finished loading.");let r=e.getGraphQLSystem(),l=await r.prepare(n.stateSlices.committed.value.state,o.operations);return i({results:l.map(({result:e})=>e),committed:!1,sideEffects:r.readSideEffects(l)})});export const createApplyClientTool=e=>t.client(async t=>{if("owner"!==e.getActiveMode())return a("Nothing was run, because changes cannot be applied in this session: the user may view this configuration but not change it. The query tool still works here, including mutations, to show what a change would do without keeping it.");let o=s(t);if(!o.ok)return o.refusal;let n=await e.getGraphQLSystem().execute(o.operations);return n.committed&&e.clearChanges(),i(n)});
1
+ import{AssistantGraphQLToolInput as e,applyTool as t,queryTool as o}from"@salsita-ai/contracts/assistant";let a=e=>({results:[],committed:!1,message:e,sideEffects:[]}),i=({preparedState:e,...t})=>JSON.parse(JSON.stringify(t)),s=t=>{let o=e.safeParse(t);if(!o.success){let e=o.error.issues.map(e=>`${e.path.join(".")}: ${e.message}`).join("; ");return{ok:!1,refusal:a(`Nothing was run, because the tool input is not a list of operations (${e}). Send { "operations": [{ "query": "<one GraphQL operation>" }] } with at least one item.`)}}return{ok:!0,operations:o.data.operations.map(({query:e,variables:t,operationName:o})=>({document:e,variables:t??void 0,operationName:o??void 0}))}};export const createQueryClientTool=e=>o.client(async t=>{let o=s(t);if(!o.ok)return o.refusal;let r=e.getStoreSystem();if(!r.isInitialized)return a("Nothing was run, because the configuration is not loaded yet, so there is no state to query. Call the tool again once the configurator has finished loading.");let n=e.getGraphQLSystem(),l=await n.prepare(r.stateSlices.committed.value.state,o.operations);return i({results:l.map(({result:e})=>e),committed:!1,sideEffects:n.readSideEffects(l)})});export const createApplyClientTool=e=>t.client(async(t,o)=>{if("owner"!==e.getActiveMode())return a("Nothing was run, because changes cannot be applied in this session: the user may view this configuration but not change it. The query tool still works here, including mutations, to show what a change would do without keeping it.");let r=s(t);if(!r.ok)return r.refusal;let n=await e.getGraphQLSystem().execute(r.operations),l=o?.toolCallId;return void 0!==l&&void 0!==n.preparedState&&e.rememberCommit(l,n.preparedState),n.committed&&e.clearChanges(),i(n)});
@@ -3,7 +3,7 @@ import type { Observable } from 'rxjs';
3
3
  import { OrthographicCamera, PerspectiveCamera } from 'three';
4
4
  import type { ObservableWithLastValue, ValueOf } from '@salsita-ai/common/utils';
5
5
  import { type DomainEntityId } from '#package/domain';
6
- import type { CanvasPadding } from '#package/ui-sdk';
6
+ import type { CanvasPadding } from '#package/react-sdk';
7
7
  import type { ConfiguratorExtensionSelectors } from '../../selectors.js';
8
8
  export declare const CameraControlType: {
9
9
  readonly Perspective: 'perspective';
@@ -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;
@@ -0,0 +1,12 @@
1
+ /**
2
+ * The agent's operation document with the closing braces it left off added at its end. Models
3
+ * often drop the last `}` of a nested selection, and the only error GraphQL gives for it is
4
+ * "Expected Name, found <EOF>", which costs the agent a round trip to fix. At the end of a
5
+ * document, closing braces are the only completion there is, so this cannot change what a valid
6
+ * document means; a brace missing in the middle nests the following fields one level deeper, which
7
+ * validation then rejects. Appending keeps the positions GraphQL reports for the agent's own text.
8
+ * A document with no unclosed brace, which covers every document that parses, or one that still
9
+ * does not parse with them closed is returned as it is, so GraphQL reports the agent's own syntax
10
+ * error and not one of the repair.
11
+ */
12
+ export declare const closeUnclosedBraces: (document: string) => string;
@@ -0,0 +1 @@
1
+ import{Lexer as r,Source as e,TokenKind as t,parse as n}from"graphql";export const closeUnclosedBraces=c=>{let a=(n=>{let c=new r(new e(n)),a=0;try{for(let r=c.advance();r.kind!==t.EOF;r=c.advance())r.kind===t.BRACE_L?a+=1:r.kind===t.BRACE_R&&(a-=1)}catch{return 0}return a})(c);if(a<=0)return c;let l=`${c}${" }".repeat(a)}`;return(r=>{try{return n(r),!0}catch{return!1}})(l)?l:c};
@@ -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;
@@ -37,6 +39,12 @@ export interface GraphQLExecution {
37
39
  readonly message?: string;
38
40
  /** What the configurator did, or would do, beyond what the operations asked for, in applied order. */
39
41
  readonly sideEffects: readonly string[];
42
+ /**
43
+ * The state the operations prepared, when it was committed or held for the user's approval; a
44
+ * held state is the one committed if the user approves. A caller can recognize its own change in
45
+ * the undo history by it. It stays in the browser: nothing that leaves it may carry the state.
46
+ */
47
+ readonly preparedState?: AnyDomainState;
40
48
  }
41
49
  /**
42
50
  * Resolves a localizable value, or each item of a list of them, to a string in the current locale.
@@ -51,10 +59,12 @@ export declare const localize: (value: unknown, resolveLocalizable: (message: Lo
51
59
  export declare class GraphQLSystem {
52
60
  private readonly _context;
53
61
  /**
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.
62
+ * Compiles the execution schema of the manifest's SDL and checks its semantic rules, once per SDL
63
+ * text, so a schema that parses but is not valid GraphQL fails every operation with an error result.
56
64
  */
57
65
  private readonly _selectSchema;
66
+ /** Parses the manifest's lens definitions, which the builder has validated, once per text. */
67
+ private readonly _selectLenses;
58
68
  /**
59
69
  * Query fields call the root resolvers; entity fields read the stored field or expression their
60
70
  * GraphQL name maps to. Rebuilt only when the manifest's field sources change.
@@ -78,10 +88,16 @@ export declare class GraphQLSystem {
78
88
  private readonly _resolveMutation;
79
89
  private readonly _runMutation;
80
90
  private readonly _setup;
91
+ /**
92
+ * Parses, validates and executes one operation document. Validation adds the rule against
93
+ * introspection to the standard ones: the agent reads the schema from its prompt, and the schema
94
+ * operations run against is the widened execution schema, which is not the one to describe.
95
+ */
96
+ private readonly _run;
81
97
  /**
82
98
  * Runs the operations in order through one working state that starts at `originalState`: a query
83
99
  * 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
100
+ * The closing braces an operation's document left off are added, then the lenses it spreads are injected into it. Nothing is committed. The first operation that fails stops the list; every later one gets a
85
101
  * "not run" error instead.
86
102
  */
87
103
  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 n,validateSchema as a}from"graphql";import{assertExistence as r,createSelector as s,isMessageDescriptor as l,isMultilingualString as c}from"@salsita-ai/common/utils";import{DomainEntityIdSchema as d,findAssistantMutation as h}from"#package/domain";import{createEntityMeta as u}from"./entity-meta.js";import{readSideEffects as m}from"./side-effects.js";let f={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.")]},p={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(d.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),_=e=>/[.!?]$/.test(e)?e:`${e}.`,x=e=>"object"==typeof e&&null!==e&&Object.getPrototypeOf(e)===Object.prototype,w=(e,t)=>{let i=x(e)?e._raw:void 0;if(g(i))return i;if(!Array.isArray(e)&&!x(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=>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 configurator cannot handle this request: ${_(t)} This is a fault in the configurator, not in your request. Tell the user this is not available.`),$=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=a(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=>(n,a,r,s)=>{if(s.parentType===s.schema.getQueryType())return i(n,a,r,s);if(s.parentType===s.schema.getMutationType())return this._resolveMutation(s.fieldName,String(s.path.key),a,r);if(!g(n))return i(n,a,r,s);if("meta"===s.fieldName){let e;return u({entity:n,state:("object"==typeof(e=v(n,"_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},d=((t,i)=>{try{return v(t,i)}catch(o){throw new e(`Expression "${i}" failed on ${g(t)?t.id:"an entity"}: ${_(S(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})}})(n,l);return c?localize(d,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"}: ${_(S(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})}})(n,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=>!y.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=>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,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=h(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 a=o.state,r=n.implementation(i,a,{manifest:o.manifest,action:this._context.domainContextSelectors.getActionSystem().createContext(a),resolveLocalizable:this._context.domainServicesSelectors.getResolveLocalizable()});if(r.updates.length>0){let i=this._context.domainContextSelectors.getStoreSystem().prepareStateEmission(r.updates,a,"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: ${_(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:a,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 a={manifest:o.assistant,state:e,emissions:[],failedMutationField:void 0},r=[];for(let[e,s]of t.entries())if(void 0===i){let t=a.emissions.length;a.failedMutationField=void 0;let l=await n({schema:o.schema,source:s.document,rootValue:this._rootValue,contextValue:a,variableValues:s.variables,operationName:s.operationName,fieldResolver:o.fieldResolver,typeResolver:this._resolveType});r.push({result:l,emissions:a.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=>m(e.updates,t)))};_prepareAndCommit=async e=>{let t,i,o,n=this._context.domainContextSelectors.getStoreSystem(),a=await this.prepare(n.stateSlices.committed.value.state,e),s=a.map(({result:e})=>e),l=this.readSideEffects(a),c=a.flatMap(e=>e.emissions);return s.some($)||0===c.length?{results:s,sideEffects:l,outcome:"none"}:{results:s,sideEffects:l,outcome:n.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(()=>p),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}}}
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{closeUnclosedBraces as g}from"./close-unclosed-braces.js";import{createEntityMeta as y}from"./entity-meta.js";import{injectAssistantLenses as v}from"./inject-assistant-lenses.js";import{readSideEffects as S}from"./side-effects.js";let _={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.")]},x={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.")]},w=new RegExp(m.pattern),E=[...a,t],$=e=>"object"==typeof e&&null!==e&&"type"in e&&"string"==typeof e.type&&"id"in e&&"string"==typeof e.id,b=(e,t)=>"object"==typeof e&&null!==e?Reflect.get(e,t):void 0,T=e=>e instanceof Error?e.message:String(e),C=e=>/[.!?]$/.test(e)?e:`${e}.`,R=e=>"object"==typeof e&&null!==e&&Object.getPrototypeOf(e)===Object.prototype,j=(e,t)=>{let i=R(e)?e._raw:void 0;if($(i))return i;if(!Array.isArray(e)&&!R(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=>j(e,o)):Object.fromEntries(Object.entries(e).map(([e,t])=>[e,j(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 A=t=>new e(`The configurator cannot handle this request: ${C(t)} This is a fault in the configurator, not in your request. Tell the user this is not available.`),M=e=>(e.errors?.length??0)>0,z=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?A(i.map(e=>e.message).join(" ")):t}catch(e){return A(T(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(!$(o))return i(o,r,a,s);if("meta"===s.fieldName){let e;return y({entity:o,state:("object"==typeof(e=b(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 b(t,i)}catch(o){throw new e(`Expression "${i}" failed on ${$(t)?t.id:"an entity"}: ${C(T(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 j(o,new Set)}catch(o){throw new e(`Expression "${i}" returned a value that is not plain serializable data on ${$(t)?t.id:"an entity"}: ${C(T(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=>!w.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=>w.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.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: ${C(T(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:_};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(T(t))]}}let c=s(n.schema,l,E);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=g(s.document),c=n.lenses?v(l,n.lenses):l,d=c instanceof e?{errors:[c]}:await this._run(c,s,n,r);a.push({result:d,emissions:r.emissions.slice(i)}),M(d)&&(o=t)}else a.push({result:z(o),emissions:[]});return a};readSideEffects=e=>{let t=this._context.domainServicesSelectors.getResolveLocalizable();return e.flatMap(({emissions:e})=>e.flatMap(e=>S(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);if(a.some(M)||0===l.length)return{results:a,sideEffects:s,outcome:"none"};let d=(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});return{results:a,sideEffects:s,outcome:n.commitPrepared(d),preparedState:d.state}};execute=async e=>{if(!this._context.domainContextSelectors.getStoreSystem().isInitialized)return{results:e.map(()=>x),committed:!1,sideEffects:[]};let t=await this._prepareAndCommit(e),{results:i,sideEffects:o,outcome:n,preparedState:r}="conflict"===t.outcome?await this._prepareAndCommit(e):t;return"committed"===n?{results:i,committed:!0,sideEffects:o,preparedState:r}:"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,preparedState:r}:"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")};
@@ -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,13 +1,17 @@
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 CreateAddEntityFab, type CreateCollectFrontendDataHandler, type CreateDeleteEntityFab, type CreateFilterPublishedChunksHandler, type CreateNavigationHotspot, type CreateNotAuthenticatedPage, type CreateSelectionHotspot, type CreateToolMenuFab, 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 UseActiveViewports, 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 UseFinalizeAction, type UseFinalizeActions, 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 UseLocaleSwitch, 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 UseSetViewState, type UseShareLinks, type UseSlice, type UseState, type UseStateValidity, type UseStepNavigation, type UseSwatchSelection, type UseSynchronizedSelector, type UseSynchronizedSelector$, type UseTabNavigation, type UseTextValue, type UseUndoRedo, type UseUpdateControl, type UseUpdatedControl, useGenerateShareLink, useLoadingStateValue, useLocalizable, useResolveLocalizable } from '#package/react-sdk';
3
3
  import { type CreatePhoenixIconSet } from '#package/ui-sdk';
4
4
  import { type UseConfiguratorExtensions } from '../application-runtime/index.js';
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';
5
+ import { type CreateConfigurationNotFoundPage } from '../configuration-not-found-page/index.js';
6
+ import { type CreateOnApplicationStartProvider, type CreateOnBackendDataReadyProvider, type CreateOnConfiguratorReadyProvider, type CreateOnFrontendDataReadyProvider, type CreateOnGoToIndexHandler, type CreateOnPresetLoadedHandler, type CreateOnPublishedDataReadyProvider, type CreateOnRoutingReadyProvider, type CreateOnSessionReadyProvider, type UseConfiguratorRouting, type UsePresetSelection, usePreview, usePropertyPageStack, usePropertyPageState } from '../configurator-context/index.js';
7
+ import { type CreateConfiguratorErrorPage } from '../configurator-error-page/index.js';
8
+ import { useCloseAction } from '../integration/index.js';
6
9
  import { type CreateGetTextureProcessingMapHandler } from '../scene/index.js';
7
10
  import type { UseUpdateEntityObjectSelection } from '../scene/scene-entity/drag-and-drop/use-updated-selection.js';
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
- import { useGenerateShareLink } from '../ui/phoenix-layout-elements/share/use-share.js';
11
+ import { type UseAssistantPanel, type UseMeasurements, type UseToolbarActions } from '../toolbar-actions/index.js';
12
+ 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, LayoutSlots, useSceneSafeArea } from '../ui/index.js';
10
13
  import { type CreatePresetDeviceNotSupported, type CreatePresetPageAction, type CreatePresetUi } from '../ui/preset-layout/PresetUi.js';
14
+ import { type UseResetCamera } from './use-reset-camera.js';
11
15
  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
16
  /**
13
17
  * Factory for creating update functions for entities.
@@ -179,6 +183,42 @@ export interface ConfiguratorInterface<ENTITIES extends DomainEntity<string>, AL
179
183
  * Creates a custom page shown when session authentication fails.
180
184
  */
181
185
  createNotAuthenticatedPage: CreateNotAuthenticatedPage;
186
+ /**
187
+ * Creates the page shown when a configuration cannot be loaded or opened, replacing the built-in
188
+ * `ConfigurationNotFoundPage`.
189
+ */
190
+ createConfigurationNotFoundPage: CreateConfigurationNotFoundPage;
191
+ /**
192
+ * Creates the page the configurator shows in production when it cannot go on, replacing the built-in
193
+ * `ConfiguratorErrorPage`.
194
+ */
195
+ createConfiguratorErrorPage: CreateConfiguratorErrorPage;
196
+ /**
197
+ * Creates the in-scene FAB that adds child entities (`sceneEntityAddFab`), replacing the built-in
198
+ * `AddEntityFab` element. It receives the component's settings and reads the recipes it offers
199
+ * with `useGroupedRecipeOptions(entityId, instanceNames, fixableViolations)`.
200
+ */
201
+ createAddEntityFab: CreateAddEntityFab;
202
+ /**
203
+ * Creates the in-scene FAB that deletes an entity (`sceneEntityDeleteFab`), replacing the built-in
204
+ * `DeleteEntityFab` element. It receives `onDelete`, `disabled` and `disabledHint`.
205
+ */
206
+ createDeleteEntityFab: CreateDeleteEntityFab;
207
+ /**
208
+ * Creates the in-scene hotspot that selects an entity (`sceneEntitySelectHotspot`), replacing the
209
+ * built-in `SelectionHotspot` element. It receives `onSelect`.
210
+ */
211
+ createSelectionHotspot: CreateSelectionHotspot;
212
+ /**
213
+ * Creates the in-scene hotspot that goes to a navigation state (`sceneEntityNavigationHotspot`),
214
+ * replacing the built-in `NavigationHotspot` element. It receives `onNavigate`.
215
+ */
216
+ createNavigationHotspot: CreateNavigationHotspot;
217
+ /**
218
+ * Creates the in-scene FAB that switches tools (`toolMenuFab`), replacing the built-in `ToolMenuFab`
219
+ * element. It receives the tool `options` and `onSelectTool`.
220
+ */
221
+ createToolMenuFab: CreateToolMenuFab;
182
222
  /**
183
223
  * Factory for creating transformers for entities.
184
224
  * @deprecated Use {@link #transformerBuilder} instead.
@@ -341,6 +381,22 @@ export interface ConfiguratorInterface<ENTITIES extends DomainEntity<string>, AL
341
381
  * Returns finalize properties based on the validity of the provided emission used for dry running finalize button
342
382
  */
343
383
  useFinalizeViolations: UseFinalizeViolations<ENTITIES, $MAP>;
384
+ /**
385
+ * Calls the given function once for every violation, side-effect hint and validation error: the violations of a
386
+ * rejected change, the hints of a committed change and an error thrown while a change was validated, with the
387
+ * text resolved
388
+ */
389
+ useConfiguratorMessages: UseConfiguratorMessages<ENTITIES, $MAP>;
390
+ /**
391
+ * Runs the project handler a `finalizeAction` component names, with its pending state, its error and the
392
+ * finalize violations; call it once per component, wrapped in `PhoenixHandlerBoundary`
393
+ */
394
+ useFinalizeAction: UseFinalizeAction;
395
+ /**
396
+ * The spec's finalize actions, each with its resolved texts and its own `run`, `isPending` and `error`, the
397
+ * primary one picked as the built-in footer picks it; call it anywhere and render the actions in a loop
398
+ */
399
+ useFinalizeActions: UseFinalizeActions;
344
400
  /**
345
401
  * Returns component based on a filter specified
346
402
  */
@@ -458,6 +514,10 @@ export interface ConfiguratorInterface<ENTITIES extends DomainEntity<string>, AL
458
514
  * Get the currently active view state
459
515
  */
460
516
  useActiveViewState: UseActiveViewState<VIEW_STATES>;
517
+ /**
518
+ * Make the given view state the active one
519
+ */
520
+ useSetViewState: UseSetViewState<VIEW_STATES>;
461
521
  /**
462
522
  * Get the currently active tool state
463
523
  */
@@ -466,6 +526,83 @@ export interface ConfiguratorInterface<ENTITIES extends DomainEntity<string>, AL
466
526
  * Get the currently active fullscreen state
467
527
  */
468
528
  useIsFullscreenActive: UseIsFullscreenActive;
529
+ /**
530
+ * Turn the fullscreen state on or off. The state is a flag the layout reads with `useIsFullscreenActive`
531
+ */
532
+ useSetFullscreen: UseSetFullscreen;
533
+ /**
534
+ * Move the camera back to the framing of the active camera configuration, as the toolbar's reset button does
535
+ */
536
+ useResetCamera: UseResetCamera;
537
+ /**
538
+ * Undo and redo changes of the configuration, with whether each is possible, as the toolbar's undo and redo
539
+ * buttons do
540
+ */
541
+ useUndoRedo: UseUndoRedo;
542
+ /**
543
+ * The spec's tabs (`sidebarTabs` or `horizontalTabs`) with the active one, and switching between them, as the
544
+ * built-in tabs do
545
+ */
546
+ useTabNavigation: UseTabNavigation<NAVIGATION_STATES>;
547
+ /**
548
+ * The spec's steps (`navigationSteps`) with the active one, and moving between them, as the built-in step buttons
549
+ * and the header's stepper do
550
+ */
551
+ useStepNavigation: UseStepNavigation<NAVIGATION_STATES>;
552
+ /**
553
+ * Tell the camera which part of the canvas a project layout leaves free for the scene. Attach `containerRef` to the
554
+ * element that covers the whole canvas and `safeAreaRef` to the region the scene should stay visible in
555
+ */
556
+ useSceneSafeArea: typeof useSceneSafeArea;
557
+ /**
558
+ * Get the responsive breakpoints the configurator's container satisfies, or `null` before it is measured
559
+ */
560
+ useActiveViewports: UseActiveViewports;
561
+ /**
562
+ * Get the preview state: whether the layout shows a preview start screen, and functions that enter and leave it
563
+ */
564
+ usePreview: typeof usePreview;
565
+ /**
566
+ * Get the host's close action, or `null` when the integration mode offers none
567
+ */
568
+ useCloseAction: typeof useCloseAction;
569
+ /**
570
+ * Whether a viewer of a configuration shared for viewing may clone it to edit: the application config sets
571
+ * `shareCloneToEdit` and the session's role may create configurations
572
+ */
573
+ useIsCloningAllowed: typeof LayoutSlots.useIsCloningAllowed;
574
+ /**
575
+ * Returns a function that turns a localizable text of the spec into a string in the current language
576
+ */
577
+ useResolveLocalizable: typeof useResolveLocalizable;
578
+ /**
579
+ * Turn one localizable text of the spec into a string in the current language
580
+ */
581
+ useLocalizable: typeof useLocalizable;
582
+ /**
583
+ * The spec's toolbar for a placement as runnable entries, grouped as the spec groups them, for a layout's own
584
+ * toolbar
585
+ */
586
+ useToolbarActions: UseToolbarActions;
587
+ /**
588
+ * The unit of dimensions and the dimension indicators, with functions that change them, as the toolbar's
589
+ * measurements button does
590
+ */
591
+ useMeasurements: UseMeasurements;
592
+ /**
593
+ * The languages the configurator offers and the active one, with a function that switches it, as the toolbar's
594
+ * language button does
595
+ */
596
+ useLocaleSwitch: UseLocaleSwitch;
597
+ /**
598
+ * Links that share the configuration for editing and for viewing, as the toolbar's share dialog generates them
599
+ */
600
+ useShareLinks: UseShareLinks;
601
+ /**
602
+ * Whether the assistant panel is open, with a function that opens or closes it, as the toolbar's assistant button
603
+ * does
604
+ */
605
+ useAssistantPanel: UseAssistantPanel;
469
606
  /**
470
607
  * Returns composition tree of the domain
471
608
  */