@salsita-ai/sdk 0.50.0-develop.ae52227c7e → 0.50.0-develop.ae9a830ef0

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 (362) hide show
  1. package/dist/application-spec/core/components/component-filter.d.ts +53 -0
  2. package/dist/application-spec/core/components/component-filter.js +1 -0
  3. package/dist/application-spec/core/components/index.d.ts +2 -0
  4. package/dist/application-spec/core/components/index.js +1 -0
  5. package/dist/application-spec/core/components/sdk-code-ref.d.ts +9 -0
  6. package/dist/application-spec/core/components/sdk-code-ref.js +1 -0
  7. package/dist/application-spec/core/enhanced-json-value.d.ts +0 -68
  8. package/dist/application-spec/core/enhanced-json-value.js +1 -1
  9. package/dist/application-spec/core/expressions/index.d.ts +2 -0
  10. package/dist/application-spec/core/expressions/index.js +1 -0
  11. package/dist/application-spec/core/expressions/relation-expression-params.d.ts +11 -0
  12. package/dist/application-spec/core/expressions/sdk-expression-implementation.d.ts +24 -0
  13. package/dist/application-spec/core/expressions/sdk-expression-implementation.js +1 -0
  14. package/dist/application-spec/core/index.d.ts +2 -0
  15. package/dist/application-spec/core/index.js +1 -1
  16. package/dist/application-spec/core/json-value.d.ts +1 -1
  17. package/dist/application-spec/{core → enhanced-json}/eval-to-constant.d.ts +1 -1
  18. package/dist/application-spec/enhanced-json/index.d.ts +4 -0
  19. package/dist/application-spec/enhanced-json/index.js +1 -0
  20. package/dist/application-spec/enhanced-json/is-enhanced-json-array.d.ts +2 -0
  21. package/dist/application-spec/enhanced-json/is-enhanced-json-array.js +1 -0
  22. package/dist/application-spec/enhanced-json/resolve-enhanced-json-value.d.ts +18 -0
  23. package/dist/application-spec/enhanced-json/resolve-enhanced-json-value.js +1 -0
  24. package/dist/application-spec/enhanced-json/schema-from-value.d.ts +24 -0
  25. package/dist/application-spec/enhanced-json/schema-from-value.js +1 -0
  26. package/dist/application-spec/enhanced-json/stringify-enhanced-json-value.d.ts +14 -0
  27. package/dist/application-spec/enhanced-json/stringify-enhanced-json-value.js +1 -0
  28. package/dist/application-spec/enhanced-json/validate-enhanced-json-value-caps.d.ts +12 -0
  29. package/dist/application-spec/enhanced-json/validate-enhanced-json-value-caps.js +1 -0
  30. package/dist/application-spec/enhanced-json/validate-no-legacy-code-ref.d.ts +13 -0
  31. package/dist/application-spec/enhanced-json/validate-no-legacy-code-ref.js +1 -0
  32. package/dist/application-spec/errors/diagnostic-codes.d.ts +8 -0
  33. package/dist/application-spec/errors/diagnostic-codes.js +1 -1
  34. package/dist/application-spec/errors/diagnostic-messages.d.ts +11 -0
  35. package/dist/application-spec/errors/diagnostic-messages.js +1 -1
  36. package/dist/application-spec/generate-application/code/project-scaffolding.js +2 -2
  37. package/dist/application-spec/generate-application/code/templates/domain-spec/generate-component-optics.js +4 -4
  38. package/dist/application-spec/generate-application/code/templates/domain-spec/generate-defaults.d.ts +4 -2
  39. package/dist/application-spec/generate-application/code/templates/domain-spec/generate-defaults.js +1 -1
  40. package/dist/application-spec/generate-application/code/templates/domain-spec/generate-domain-block.js +43 -45
  41. package/dist/application-spec/generate-application/code/templates/domain-spec/generate-phx-globals.js +3 -0
  42. package/dist/application-spec/generate-application/code/templates/domain-spec/generate-relation-expressions.js +1 -1
  43. package/dist/application-spec/generate-application/code/templates/domain-spec/generate-resources.d.ts +6 -8
  44. package/dist/application-spec/generate-application/code/templates/domain-spec/generate-resources.js +11 -11
  45. package/dist/application-spec/generate-application/code/templates/domain-spec/index.d.ts +1 -1
  46. package/dist/application-spec/generate-application/code/templates/domain-spec/index.js +1 -1
  47. package/dist/application-spec/generate-application/code/templates/domain-spec.js +12 -12
  48. package/dist/application-spec/generate-application/code/templates/globals.js +5 -4
  49. package/dist/application-spec/generate-application/code/templates/index.d.ts +0 -1
  50. package/dist/application-spec/generate-application/code/templates/index.js +1 -1
  51. package/dist/application-spec/generate-application/code/templates/skills/phoenix-review-skill.js +8 -2
  52. package/dist/application-spec/generate-application/code/templates/skills/phoenix-skill.js +1 -1
  53. package/dist/application-spec/generate-application/code/templates/skills/sdk-content.d.ts +5 -3
  54. package/dist/application-spec/generate-application/code/templates/skills/sdk-content.js +2 -2
  55. package/dist/application-spec/generate-application/runtime/application-runtime.d.ts +1 -3
  56. package/dist/application-spec/generate-application/runtime/configurator-runtime/configurator-runtime.d.ts +1 -3
  57. package/dist/application-spec/generate-application/runtime/sections/build-sdk-optic.d.ts +1 -1
  58. package/dist/application-spec/generate-application/runtime/sections/build-sdk-optic.js +1 -1
  59. package/dist/application-spec/generate-application/runtime/sections/component-optic.d.ts +2 -1
  60. package/dist/application-spec/generate-application/runtime/sections/expression-runtime.js +1 -1
  61. package/dist/application-spec/generate-application/runtime/sections/transformers-runtime.d.ts +2 -4
  62. package/dist/application-spec/index.d.ts +1 -0
  63. package/dist/application-spec/index.js +1 -1
  64. package/dist/application-spec/parse-application-files/categorize/module-analysis.d.ts +1 -1
  65. package/dist/application-spec/parse-application-files/categorize/module-analysis.js +1 -1
  66. package/dist/application-spec/parse-application-files/raw-spec/raw-assistant.d.ts +16 -3
  67. package/dist/application-spec/parse-application-files/raw-spec/raw-assistant.js +1 -1
  68. package/dist/application-spec/parse-application-files/raw-spec/raw-spec-file.js +1 -1
  69. package/dist/application-spec/parse-application-files/spec/application/admin-spec/admin-spec.js +1 -1
  70. package/dist/application-spec/parse-application-files/spec/application/configurator-spec/configurator-spec.js +1 -1
  71. package/dist/application-spec/parse-application-files/spec/components/component-entry.d.ts +1 -9
  72. package/dist/application-spec/parse-application-files/spec/components/component-entry.js +1 -1
  73. package/dist/application-spec/parse-application-files/spec/components/component-filter.d.ts +1 -54
  74. package/dist/application-spec/parse-application-files/spec/components/component-filter.js +1 -1
  75. package/dist/application-spec/parse-application-files/spec/components/index.d.ts +1 -1
  76. package/dist/application-spec/parse-application-files/spec/components/index.js +1 -1
  77. package/dist/application-spec/parse-application-files/spec/expressions/expression.d.ts +1 -28
  78. package/dist/application-spec/parse-application-files/spec/expressions/expression.js +1 -1
  79. package/dist/application-spec/parse-application-files/spec/expressions/expressions.d.ts +1 -1
  80. package/dist/application-spec/parse-application-files/spec/expressions/expressions.js +1 -1
  81. package/dist/application-spec/parse-application-files/spec/expressions/index.d.ts +0 -1
  82. package/dist/application-spec/parse-application-files/spec/expressions/index.js +1 -1
  83. package/dist/application-spec/parse-application-files/spec/expressions/memo-eval-plan.js +1 -1
  84. package/dist/application-spec/parse-application-files/spec/expressions/user-expressions.js +1 -1
  85. package/dist/application-spec/parse-application-files/spec/model/defaults.d.ts +3 -3
  86. package/dist/application-spec/parse-application-files/spec/model/defaults.js +1 -1
  87. package/dist/application-spec/parse-application-files/spec/relations/reference-field-type.d.ts +25 -0
  88. package/dist/application-spec/parse-application-files/spec/relations/reference-field-type.js +1 -0
  89. package/dist/application-spec/parse-application-files/spec/relations/relation-field-mismatch.d.ts +46 -0
  90. package/dist/application-spec/parse-application-files/spec/relations/relation-field-mismatch.js +1 -0
  91. package/dist/application-spec/parse-application-files/spec/relations/relations.d.ts +4 -3
  92. package/dist/application-spec/parse-application-files/spec/relations/relations.js +1 -1
  93. package/dist/application-spec/parse-application-files/spec/sections/assistant/assistant-schema.js +1 -1
  94. package/dist/application-spec/parse-application-files/spec/sections/infra.d.ts +2 -0
  95. package/dist/application-spec/parse-application-files/spec/sections/infra.js +1 -1
  96. package/dist/client/phoenix-api.d.ts +96 -0
  97. package/dist/configurator/application-runtime/extensions/create-configurator-extensions.js +1 -1
  98. package/dist/configurator/application-runtime/extensions/selectors.d.ts +3 -1
  99. package/dist/configurator/application-runtime/extensions/selectors.js +1 -1
  100. package/dist/configurator/application-runtime/extensions/systems/assistant-system/assistant-system.d.ts +3 -1
  101. package/dist/configurator/application-runtime/extensions/systems/assistant-system/assistant-system.js +1 -1
  102. package/dist/configurator/application-runtime/extensions/systems/drag-and-drop-system/drag-and-drop-system.d.ts +3 -3
  103. package/dist/configurator/application-runtime/extensions/systems/graphql-system/graphql-system.d.ts +14 -4
  104. package/dist/configurator/application-runtime/extensions/systems/graphql-system/graphql-system.js +1 -1
  105. package/dist/configurator/application-runtime/extensions/systems/graphql-system/inject-assistant-lenses.d.ts +11 -0
  106. package/dist/configurator/application-runtime/extensions/systems/graphql-system/inject-assistant-lenses.js +1 -0
  107. package/dist/configurator/application-runtime/extensions/systems/layout-system/layout-system.d.ts +2 -2
  108. package/dist/configurator/application-runtime/extensions/systems/layout-system/layout-system.js +1 -1
  109. package/dist/configurator/common/configurator-interface.d.ts +11 -1
  110. package/dist/configurator/common/configurator-interface.js +1 -1
  111. package/dist/configurator/common/frontend-analytics.d.ts +2 -0
  112. package/dist/configurator/common/frontend-analytics.js +1 -1
  113. package/dist/configurator/configurator-context/configurator-hooks/layout-hooks.d.ts +1 -1
  114. package/dist/configurator/scene/scene-controls/hotspot-drag-handle/HotspotDragHandle.d.ts +1 -1
  115. package/dist/configurator/scene/scene-controls/hotspot-drag-handle/HotspotDragSceneHandle.d.ts +1 -1
  116. package/dist/configurator/scene/scene-entity/dimension-indicators/DimensionIndicator.d.ts +1 -1
  117. package/dist/configurator/scene/scene-entity/dimension-indicators/DimensionIndicatorInternal.d.ts +1 -1
  118. package/dist/configurator/scene/scene-entity/drag-and-drop/shared.d.ts +2 -2
  119. package/dist/configurator/scene/scene-entity/drag-and-drop/use-drag-object.d.ts +1 -1
  120. package/dist/configurator/scene/scene-entity/materials/RemoteReplacedMaterial.js +1 -1
  121. package/dist/configurator/scene/scene-entity/objects/SceneEntityObjectTextDecal.d.ts +1 -1
  122. package/dist/configurator/ui/assistant/AssistantMarkdown.d.ts +1 -1
  123. package/dist/configurator/ui/assistant/AssistantMarkdown.js +1 -1
  124. package/dist/configurator/ui/assistant/AssistantThread.js +1 -1
  125. package/dist/configurator/ui/assistant/entity-link/AssistantEntityLink.d.ts +13 -0
  126. package/dist/configurator/ui/assistant/entity-link/AssistantEntityLink.js +1 -0
  127. package/dist/configurator/ui/assistant/entity-link/entity-link-selection.d.ts +22 -0
  128. package/dist/configurator/ui/assistant/entity-link/entity-link-selection.js +1 -0
  129. package/dist/configurator/ui/assistant/entity-link/entity-link-state.d.ts +27 -0
  130. package/dist/configurator/ui/assistant/entity-link/entity-link-state.js +1 -0
  131. package/dist/configurator/ui/assistant/entity-link/entity-link-target.d.ts +5 -0
  132. package/dist/configurator/ui/assistant/entity-link/entity-link-target.js +1 -0
  133. package/dist/configurator/ui/assistant/entity-link/index.d.ts +3 -0
  134. package/dist/configurator/ui/assistant/entity-link/index.js +1 -0
  135. package/dist/configurator/ui/configurator-layout/sidebar-keys/index.d.ts +1 -0
  136. package/dist/configurator/ui/configurator-layout/sidebar-keys/index.js +1 -0
  137. package/dist/configurator/ui/configurator-layout/sidebar-keys/sidebar-keys.d.ts +11 -0
  138. package/dist/configurator/ui/configurator-layout/sidebar-keys/sidebar-keys.js +1 -0
  139. package/dist/configurator/ui/configurator-layout/slots/desktop-sidebar/DesktopSidebar.d.ts +101 -0
  140. package/dist/configurator/ui/configurator-layout/slots/desktop-sidebar/DesktopSidebar.js +16 -0
  141. package/dist/configurator/ui/configurator-layout/slots/desktop-sidebar/index.d.ts +1 -0
  142. package/dist/configurator/ui/configurator-layout/slots/desktop-sidebar/index.js +1 -0
  143. package/dist/configurator/ui/configurator-layout/slots/services/InvariantViolations.d.ts +4 -4
  144. package/dist/configurator/ui/configurator-layout/slots/services/InvariantViolations.js +1 -1
  145. package/dist/configurator/ui/configurator-layout/slots/services/SideEffects.d.ts +3 -6
  146. package/dist/configurator/ui/configurator-layout/slots/services/SideEffects.js +1 -1
  147. package/dist/configurator/ui/configurator-layout/slots/slots.d.ts +1 -0
  148. package/dist/configurator/ui/configurator-layout/slots/slots.js +1 -1
  149. package/dist/configurator/ui/configurator-layout/universal/DesktopLayout.d.ts +0 -74
  150. package/dist/configurator/ui/configurator-layout/universal/DesktopLayout.js +5 -20
  151. package/dist/configurator/ui/legacy/layout/steps/StepsNavigation.d.ts +2 -2
  152. package/dist/configurator/ui/phoenix-layout-elements/header/common/step-navigation/StepsNavigation.d.ts +2 -2
  153. package/dist/docs/dimensions/3d-scene-integration/dimension-indicators.mdx +2 -2
  154. package/dist/docs/dimensions/3d-scene-integration/editable-angle-indicator.mdx +1 -1
  155. package/dist/docs/dimensions/3d-scene-integration/editable-distance-dimension-indicator.mdx +1 -1
  156. package/dist/docs/dimensions/3d-scene-integration/list-selector-dimension-indicator.mdx +1 -1
  157. package/dist/docs/drag-and-drop/drag-handle.mdx +1 -1
  158. package/dist/docs/drag-and-drop/hotspot-handle.mdx +1 -1
  159. package/dist/docs/drag-and-drop/planes.mdx +1 -1
  160. package/dist/docs/drag-and-drop/rotatable.mdx +2 -2
  161. package/dist/docs/index.json +42 -1
  162. package/dist/docs/layouts/custom-layout.mdx +1164 -0
  163. package/dist/docs/layouts/header/fixed.mdx +2 -2
  164. package/dist/docs/layouts/header/floating.mdx +2 -2
  165. package/dist/docs/layouts/sidebar/in-a-custom-layout.mdx +380 -0
  166. package/dist/docs/layouts/sidebar-footer/basic.mdx +32 -77
  167. package/dist/docs/other-features/client-side-rendering/declarative.mdx +1 -1
  168. package/dist/docs/other-features/transformers.mdx +4 -0
  169. package/dist/docs/phoenix/application-states.mdx +9 -7
  170. package/dist/docs/phoenix/configurator-interface.mdx +87 -18
  171. package/dist/docs/phoenix/domain-model.mdx +4 -0
  172. package/dist/docs/phoenix/finalization.mdx +1 -1
  173. package/dist/docs/phoenix/layout-slots.mdx +114 -0
  174. package/dist/docs/phoenix/phoenix-cli.mdx +5 -1
  175. package/dist/docs/phoenix/project-structure.mdx +6 -3
  176. package/dist/docs/phoenix/testing.mdx +140 -0
  177. package/dist/docs/phoenix/webhook-membership.mdx +10 -9
  178. package/dist/docs/phoenix/webhooks.mdx +1 -1
  179. package/dist/domain/admin-domain/implementation/common-admin-expressions.d.ts +26 -11
  180. package/dist/domain/admin-domain/implementation/common-admin-publish.d.ts +1 -2
  181. package/dist/domain/admin-domain/index.js +1 -1
  182. package/dist/domain/application/GetApplicationWrapperHandler.d.ts +1 -1
  183. package/dist/domain/application/application-config.d.ts +4 -2
  184. package/dist/domain/application/assistant/assistant-fields.d.ts +12 -0
  185. package/dist/domain/application/assistant/assistant-fields.js +1 -0
  186. package/dist/domain/application/assistant/assistant-manifest.d.ts +9 -1
  187. package/dist/domain/application/assistant/assistant-resolved-manifest.d.ts +38 -2
  188. package/dist/domain/application/assistant/assistant-resolved-manifest.js +1 -1
  189. package/dist/domain/application/assistant/build-assistant-lenses.d.ts +14 -0
  190. package/dist/domain/application/assistant/build-assistant-lenses.js +5 -0
  191. package/dist/domain/application/assistant/build-assistant-manifest.js +1 -1
  192. package/dist/domain/application/assistant/create-assistant-execution-schema.d.ts +32 -0
  193. package/dist/domain/application/assistant/create-assistant-execution-schema.js +1 -0
  194. package/dist/domain/application/assistant/generate-assistant-prompt.js +1 -1
  195. package/dist/domain/application/assistant/index.d.ts +6 -1
  196. package/dist/domain/application/assistant/index.js +1 -1
  197. package/dist/domain/application/assistant/session-setup/AssistantSetupHandler.d.ts +20 -0
  198. package/dist/domain/application/assistant/session-setup/AssistantSetupHandler.js +1 -0
  199. package/dist/domain/application/assistant/session-setup/apply-assistant-setup.d.ts +10 -0
  200. package/dist/domain/application/assistant/session-setup/apply-assistant-setup.js +1 -0
  201. package/dist/domain/application/assistant/session-setup/assistant-setup-manifest.d.ts +48 -0
  202. package/dist/domain/application/assistant/session-setup/assistant-setup-manifest.js +1 -0
  203. package/dist/domain/application/assistant/session-setup/create-session-assistant.d.ts +15 -0
  204. package/dist/domain/application/assistant/session-setup/create-session-assistant.js +1 -0
  205. package/dist/domain/application/assistant/session-setup/index.d.ts +4 -0
  206. package/dist/domain/application/assistant/session-setup/index.js +1 -0
  207. package/dist/domain/application/configurator-builder.d.ts +1 -1
  208. package/dist/domain/application/configurator-builder.js +1 -1
  209. package/dist/domain/application/create-initial-published-data.d.ts +5 -5
  210. package/dist/domain/application/index.d.ts +0 -1
  211. package/dist/domain/application/index.js +1 -1
  212. package/dist/domain/application/published-data/map-published-chunked-data.d.ts +1 -1
  213. package/dist/domain/application/published-data/map-published-data.d.ts +7 -3
  214. package/dist/domain/core/component/domain-component-optic.d.ts +1 -2
  215. package/dist/domain/core/component/domain-component-optic.js +2 -2
  216. package/dist/domain/core/component/system-component-filter.d.ts +15 -2
  217. package/dist/domain/core/expression/constant-expressions.d.ts +16 -8
  218. package/dist/domain/core/expression/custom-expression.d.ts +16 -3
  219. package/dist/domain/core/invariant/violation.d.ts +50 -2
  220. package/dist/domain/core/invariant/violation.js +1 -1
  221. package/dist/domain/core/model/model.d.ts +1 -1
  222. package/dist/domain/core/recipe/recipes.d.ts +18 -50
  223. package/dist/domain/core/recipe/recipes.js +1 -1
  224. package/dist/domain/core/relation/all-of-type-relation.d.ts +8 -21
  225. package/dist/domain/core/relation/all-of-type-relation.js +1 -1
  226. package/dist/domain/core/relation/direct-relation.d.ts +13 -24
  227. package/dist/domain/core/relation/index.d.ts +0 -1
  228. package/dist/domain/core/relation/indirect-relation.d.ts +12 -67
  229. package/dist/domain/core/relation/indirect-relation.js +1 -1
  230. package/dist/domain/core/relation/relation-factory.d.ts +19 -15
  231. package/dist/domain/core/relation/relation-factory.js +1 -1
  232. package/dist/domain/core/state/state.d.ts +1 -1
  233. package/dist/domain/domain-runtime/access/selectors.d.ts +9 -0
  234. package/dist/domain/domain-runtime/access/selectors.js +1 -1
  235. package/dist/domain/domain-runtime/access/types.d.ts +2 -0
  236. package/dist/domain/domain-runtime/access/types.js +1 -1
  237. package/dist/domain/domain-runtime/domain-context/selectors.d.ts +14 -13
  238. package/dist/domain/domain-runtime/domain-context/selectors.js +1 -1
  239. package/dist/domain/domain-runtime/domain-context/types.d.ts +4 -1
  240. package/dist/domain/domain-runtime/domain-runtime.d.ts +32 -16
  241. package/dist/domain/domain-runtime/errors/implementation-error-collector.d.ts +19 -0
  242. package/dist/domain/domain-runtime/errors/implementation-error-collector.js +1 -0
  243. package/dist/domain/domain-runtime/errors/implementation-error.d.ts +46 -0
  244. package/dist/domain/domain-runtime/errors/implementation-error.js +1 -0
  245. package/dist/domain/domain-runtime/errors/implementation-errors.d.ts +13 -0
  246. package/dist/domain/domain-runtime/errors/implementation-errors.js +1 -0
  247. package/dist/domain/domain-runtime/errors/index.d.ts +4 -0
  248. package/dist/domain/domain-runtime/errors/index.js +1 -0
  249. package/dist/domain/domain-runtime/errors/to-implementation-errors.d.ts +10 -0
  250. package/dist/domain/domain-runtime/errors/to-implementation-errors.js +1 -0
  251. package/dist/domain/domain-runtime/index.d.ts +1 -0
  252. package/dist/domain/domain-runtime/index.js +1 -1
  253. package/dist/domain/domain-runtime/spec/initialize.d.ts +11 -0
  254. package/dist/domain/domain-runtime/spec/initialize.js +1 -1
  255. package/dist/domain/domain-runtime/spec/module-checks/project-modules.d.ts +8 -1
  256. package/dist/domain/domain-runtime/spec/module-checks/project-modules.js +1 -1
  257. package/dist/domain/domain-runtime/spec/module-checks/resolve-action-modules.js +1 -1
  258. package/dist/domain/domain-runtime/spec/module-checks/resolve-expression-modules.js +1 -1
  259. package/dist/domain/domain-runtime/spec/module-checks/resolve-imported-transformers.d.ts +7 -7
  260. package/dist/domain/domain-runtime/spec/module-checks/resolve-imported-transformers.js +1 -1
  261. package/dist/domain/domain-runtime/spec/module-checks/resolve-invariant-modules.js +1 -1
  262. package/dist/domain/extensions/attribute-switch.d.ts +1 -1
  263. package/dist/domain/extensions/attribute-switch.js +1 -1
  264. package/dist/domain/extensions/canvas-config.d.ts +1 -1
  265. package/dist/domain/extensions/client-side-image.d.ts +2 -2
  266. package/dist/domain/extensions/client-side-image.js +1 -1
  267. package/dist/domain/extensions/common/angle-indicator-schema.d.ts +2 -2
  268. package/dist/domain/extensions/common/dimension-indicator-schema.d.ts +2 -2
  269. package/dist/domain/extensions/editable-angle-indicator.d.ts +1 -1
  270. package/dist/domain/extensions/editable-distance-dimension-indicator.d.ts +1 -1
  271. package/dist/domain/extensions/editable-offset-indicator.d.ts +1 -1
  272. package/dist/domain/extensions/editable-offset-indicator.js +1 -1
  273. package/dist/domain/extensions/fit-selection-orthographic-camera-component.js +1 -1
  274. package/dist/domain/extensions/fit-selection-perspective-camera-component.js +1 -1
  275. package/dist/domain/extensions/horizontal-tabs.d.ts +2 -2
  276. package/dist/domain/extensions/list-selector-dimension-indicator.d.ts +1 -1
  277. package/dist/domain/extensions/navigation-steps.d.ts +2 -2
  278. package/dist/domain/extensions/offset-indicator.js +1 -1
  279. package/dist/domain/extensions/rotation-handle.d.ts +2 -2
  280. package/dist/domain/extensions/save-template-thumbnail.d.ts +2 -2
  281. package/dist/domain/extensions/save-template-thumbnail.js +1 -1
  282. package/dist/domain/extensions/scene-entity-animation.js +1 -1
  283. package/dist/domain/mocks/create-mock-domain-context.d.ts +1 -1
  284. package/dist/domain/mocks/create-mock-domain-runtime.d.ts +18 -9
  285. package/dist/domain/mocks/create-mock-domain-runtime.js +1 -1
  286. package/dist/domain/mocks/create-mock-domain.d.ts +1 -1
  287. package/dist/domain/mocks/create-mock-domain.js +1 -1
  288. package/dist/domain/mocks/create-mock-state.d.ts +2 -2
  289. package/dist/domain/mocks/create-test-application-config.d.ts +59 -0
  290. package/dist/domain/mocks/create-test-application-config.js +1 -0
  291. package/dist/domain/mocks/index.d.ts +1 -0
  292. package/dist/domain/mocks/index.js +1 -1
  293. package/dist/domain/projections/blender-projections/camera.d.ts +1 -1
  294. package/dist/domain/system-components/application-config.d.ts +2 -2
  295. package/dist/domain/system-components/child-entity-selection.js +1 -1
  296. package/dist/domain/system-components/collision-box-geometry.d.ts +4 -2
  297. package/dist/domain/system-components/collision-geometry.d.ts +4 -2
  298. package/dist/domain/system-components/collision-point-geometry.d.ts +4 -2
  299. package/dist/domain/system-components/common/material-override-schema.d.ts +2 -2
  300. package/dist/domain/system-components/common/recipes.d.ts +21 -3
  301. package/dist/domain/system-components/common/recipes.js +1 -1
  302. package/dist/domain/system-components/constraint.d.ts +10 -23
  303. package/dist/domain/system-components/drag-handle.d.ts +1 -1
  304. package/dist/domain/system-components/drag-handle.js +1 -1
  305. package/dist/domain/system-components/fit-entity-orthographic-camera-component.js +1 -1
  306. package/dist/domain/system-components/fit-entity-perspective-camera-component.js +1 -1
  307. package/dist/domain/system-components/fit-root-orthographic-camera-component.js +1 -1
  308. package/dist/domain/system-components/fit-root-perspective-camera-component.js +1 -1
  309. package/dist/domain/system-components/hotspot-drag-handle.d.ts +1 -1
  310. package/dist/domain/system-components/hotspot-drag-handle.js +1 -1
  311. package/dist/domain/system-components/material-swatch.js +1 -1
  312. package/dist/domain/system-components/scene-entity-material-override.d.ts +1 -1
  313. package/dist/domain/system-components/scene-entity-object-material-override.d.ts +1 -1
  314. package/dist/domain/system-components/scene-entity-object-text-decal.d.ts +1 -1
  315. package/dist/domain/system-components/scene-entity-object-transimissive-material-override.d.ts +1 -1
  316. package/dist/domain/system-components/scene-entity-transimissive-material-override.d.ts +1 -1
  317. package/dist/domain/system-components/static-orthographic-camera-component.js +1 -1
  318. package/dist/domain/system-components/static-perspective-camera-component.js +1 -1
  319. package/dist/domain/utils/eval-cache.d.ts +1 -1
  320. package/dist/domain/utils/map-nested-object.d.ts +1 -1
  321. package/dist/editor/domain-editors/use-implementation-files.d.ts +1 -2
  322. package/dist/editor/mocks/EditorMockContext.js +1 -1
  323. package/dist/legacy/domain-cli/gen/configurator-builder.js +13 -12
  324. package/dist/legacy/domain-cli/gen/constant-expressions.js +1 -1
  325. package/dist/legacy/domain-cli/gen/defaults.js +1 -7
  326. package/dist/legacy/domain-cli/gen/relations.js +1 -1
  327. package/dist/legacy/domain-cli/utils/cache.d.ts +1 -1
  328. package/dist/legacy/domain-cli/utils/cache.js +1 -1
  329. package/dist/legacy/domain-spec/__generated/domain-schema.d.ts +81 -68
  330. package/dist/legacy/phoenix-cli/project-gen/generators/file-templates/agents/claude-md.d.ts +1 -1
  331. package/dist/legacy/phoenix-cli/project-gen/generators/file-templates/agents/cursor-rules.d.ts +1 -1
  332. package/dist/legacy/phoenix-cli/project-gen/generators/file-templates/agents/shared-sdk-content.d.ts +1 -1
  333. package/dist/legacy/phoenix-cli/project-gen/generators/file-templates/agents/shared-sdk-content.js +2 -1
  334. package/dist/phoenix/commands/deploy.js +1 -1
  335. package/dist/phoenix/services/source-archive.d.ts +1 -0
  336. package/dist/phoenix/services/source-archive.js +1 -1
  337. package/dist/react-sdk/application-runtime/hooks/use-access-service.d.ts +2 -0
  338. package/dist/react-sdk/application-runtime/mocks/create-mock-application-runtime.js +1 -1
  339. package/dist/react-sdk/application-runtime/routing/access-service.d.ts +1 -0
  340. package/dist/react-sdk/application-runtime/runtime/create-application-runtime.d.ts +33 -16
  341. package/dist/react-sdk/application-runtime/runtime/create-application-runtime.js +1 -1
  342. package/dist/react-sdk/domain-context/common-hooks/use-configurator-messages.d.ts +30 -0
  343. package/dist/react-sdk/domain-context/common-hooks/use-configurator-messages.js +1 -0
  344. package/dist/react-sdk/domain-context/common-hooks/use-domain-context.d.ts +4 -4
  345. package/dist/react-sdk/domain-context/index.d.ts +2 -1
  346. package/dist/react-sdk/domain-context/index.js +1 -1
  347. package/dist/react-sdk/domain-context/system-hooks/navigation-hooks.d.ts +6 -0
  348. package/dist/react-sdk/domain-context/system-hooks/navigation-hooks.js +1 -1
  349. package/dist/react-sdk/domain-controls/hooks/use-angle-dimension.d.ts +1 -1
  350. package/dist/ui-sdk/theme/types.d.ts +1 -1
  351. package/dist/webhook/builders/webhook-builder.js +1 -1
  352. package/package.json +3 -3
  353. package/schema/domain-spec.json +1115 -209
  354. package/dist/application-spec/generate-application/code/templates/prettier-ignore.d.ts +0 -1
  355. package/dist/application-spec/generate-application/code/templates/prettier-ignore.js +0 -6
  356. package/dist/domain/application/resource-builder.d.ts +0 -13
  357. package/dist/domain/application/resource-builder.js +0 -1
  358. package/dist/domain/core/relation/relation-implementation.d.ts +0 -7
  359. /package/dist/{domain/core/relation/relation-implementation.js → application-spec/core/expressions/relation-expression-params.js} +0 -0
  360. /package/dist/application-spec/{core → enhanced-json}/eval-code-uses-self.d.ts +0 -0
  361. /package/dist/application-spec/{core → enhanced-json}/eval-code-uses-self.js +0 -0
  362. /package/dist/application-spec/{core → enhanced-json}/eval-to-constant.js +0 -0
@@ -1 +1 @@
1
- import{SystemComponentBuilder as e,isSnapshotOfComponentType as t}from"../core/index.js";export const FitSelectionOrthographicCameraComponentName="fitSelectionOrthographicCamera";export const fitSelectionOrthographicCameraComponent=e.component("fitSelectionOrthographicCamera").withState({type:"object",tsType:"FitSelectionOrthographicCameraComponentState",import:[{module:"@salsita-ai/sdk/domain",member:"FitSelectionOrthographicCameraComponentState"}],properties:{priority:{type:"number"},fitToBox:{type:"boolean"},animateTransition:{type:"boolean"},zoomLockGroup:{type:["string","null"]},rotationLockGroup:{type:["string","null"]},left:{type:"number"},bottom:{type:"number"},frustumSize:{type:"number"},near:{type:"number"},far:{type:"number"},focus:{type:"number"},distance:{type:"number"},minDistance:{type:"number"},maxDistance:{type:"number"},minZoom:{type:"number"},maxZoom:{type:"number"},polarAngle:{type:"number"},minPolarAngle:{type:"number"},maxPolarAngle:{type:"number"},azimuthAngle:{type:"number"},minAzimuthAngle:{type:"number"},maxAzimuthAngle:{type:"number"},smoothTime:{type:"number"},draggingSmoothTime:{type:"number"},maxSpeed:{type:"number"},azimuthRotateSpeed:{type:"number"},polarRotateSpeed:{type:"number"},dollySpeed:{type:"number"},dollyDragInverted:{type:"boolean"},truckSpeed:{type:"number"},mouseButtons:{type:"object",properties:{left:{type:"number"},middle:{type:"number"},right:{type:"number"},wheel:{type:"number"}},required:["left","middle","right"],additionalProperties:!1},touches:{type:"object",properties:{one:{type:"number"},two:{type:"number"},three:{type:"number"}},required:["one","two"],additionalProperties:!1},boundaryEnclosesCamera:{type:"boolean"},dollyToCursor:{type:"boolean"},dragToOffset:{type:"boolean"},verticalDragToForward:{type:"boolean"},boundary:{type:"object"},relative:{type:"boolean"}},required:[],additionalProperties:!1}).build();export const isFitSelectionOrthographicCameraComponent=t(fitSelectionOrthographicCameraComponent);
1
+ import{SystemComponentBuilder as e,isSnapshotOfComponentType as t}from"../core/index.js";export const FitSelectionOrthographicCameraComponentName="fitSelectionOrthographicCamera";export const fitSelectionOrthographicCameraComponent=e.component("fitSelectionOrthographicCamera").withState({type:"object",tsType:"FitSelectionOrthographicCameraComponentState",import:[{module:"@salsita-ai/sdk/domain",member:"FitSelectionOrthographicCameraComponentState"}],properties:{priority:{type:"number"},fitToBox:{type:"boolean"},animateTransition:{type:"boolean"},zoomLockGroup:{type:["string","null"]},rotationLockGroup:{type:["string","null"]},left:{type:"number"},bottom:{type:"number"},frustumSize:{type:"number"},near:{type:"number"},far:{type:"number"},distance:{type:"number"},minDistance:{type:"number"},maxDistance:{type:"number"},minZoom:{type:"number"},maxZoom:{type:"number"},polarAngle:{type:"number"},minPolarAngle:{type:"number"},maxPolarAngle:{type:"number"},azimuthAngle:{type:"number"},minAzimuthAngle:{type:"number"},maxAzimuthAngle:{type:"number"},smoothTime:{type:"number"},draggingSmoothTime:{type:"number"},maxSpeed:{type:"number"},azimuthRotateSpeed:{type:"number"},polarRotateSpeed:{type:"number"},dollySpeed:{type:"number"},dollyDragInverted:{type:"boolean"},truckSpeed:{type:"number"},mouseButtons:{type:"object",properties:{left:{type:"number",enum:[0,1,2,4,8,16]},middle:{type:"number",enum:[0,1,2,4,8,16]},right:{type:"number",enum:[0,1,2,4,8,16]},wheel:{type:"number",enum:[0,1,2,4,8,16]}},required:["left","middle","right","wheel"],additionalProperties:!1},touches:{type:"object",properties:{one:{type:"number",enum:[0,8,16,32,64,128]},two:{type:"number",enum:[0,32,64,128,256,512,1024,2048,4096,8192,16384,32768]},three:{type:"number",enum:[0,32,64,128,256,512,1024,2048,4096,8192,16384,32768]}},required:["one","two","three"],additionalProperties:!1},boundaryEnclosesCamera:{type:"boolean"},dollyToCursor:{type:"boolean"},dragToOffset:{type:"boolean"},verticalDragToForward:{type:"boolean"},boundary:{type:"object"},relative:{type:"boolean"}},required:[],additionalProperties:!1}).build();export const isFitSelectionOrthographicCameraComponent=t(fitSelectionOrthographicCameraComponent);
@@ -1 +1 @@
1
- import{SystemComponentBuilder as e,isSnapshotOfComponentType as t}from"../core/index.js";export const FitSelectionPerspectiveCameraComponentName="fitSelectionPerspectiveCamera";export const fitSelectionPerspectiveCameraComponent=e.component("fitSelectionPerspectiveCamera").withState({type:"object",tsType:"FitSelectionPerspectiveCameraComponentState",import:[{module:"@salsita-ai/sdk/domain",member:"FitSelectionPerspectiveCameraComponentState"}],properties:{priority:{type:"number"},fitToBox:{type:"boolean"},fitMeshChanges:{type:"boolean"},animateOnLoad:{type:"boolean"},animateTransition:{type:"boolean"},distanceLockGroup:{type:["string","null"]},rotationLockGroup:{type:["string","null"]},fov:{type:"number"},far:{type:"number"},near:{type:"number"},focus:{type:"number"},distance:{type:"number"},minDistance:{type:"number"},maxDistance:{type:"number"},polarAngle:{type:"number"},minPolarAngle:{type:"number"},maxPolarAngle:{type:"number"},azimuthAngle:{type:"number"},minAzimuthAngle:{type:"number"},maxAzimuthAngle:{type:"number"},smoothTime:{type:"number"},draggingSmoothTime:{type:"number"},maxSpeed:{type:"number"},azimuthRotateSpeed:{type:"number"},polarRotateSpeed:{type:"number"},dollySpeed:{type:"number"},dollyDragInverted:{type:"boolean"},truckSpeed:{type:"number"},mouseButtons:{type:"object",properties:{left:{type:"number"},middle:{type:"number"},right:{type:"number"},wheel:{type:"number"}},required:["left","middle","right"],additionalProperties:!1},touches:{type:"object",properties:{one:{type:"number"},two:{type:"number"},three:{type:"number"}},required:["one","two"],additionalProperties:!1},boundaryEnclosesCamera:{type:"boolean"},dollyToCursor:{type:"boolean"},dragToOffset:{type:"boolean"},verticalDragToForward:{type:"boolean"},boundary:{type:"object"},relative:{type:"boolean"}},required:[],additionalProperties:!1}).build();export const isFitSelectionPerspectiveCameraComponent=t(fitSelectionPerspectiveCameraComponent);
1
+ import{SystemComponentBuilder as e,isSnapshotOfComponentType as t}from"../core/index.js";export const FitSelectionPerspectiveCameraComponentName="fitSelectionPerspectiveCamera";export const fitSelectionPerspectiveCameraComponent=e.component("fitSelectionPerspectiveCamera").withState({type:"object",tsType:"FitSelectionPerspectiveCameraComponentState",import:[{module:"@salsita-ai/sdk/domain",member:"FitSelectionPerspectiveCameraComponentState"}],properties:{priority:{type:"number"},fitToBox:{type:"boolean"},fitMeshChanges:{type:"boolean"},animateOnLoad:{type:"boolean"},animateTransition:{type:"boolean"},distanceLockGroup:{type:["string","null"]},rotationLockGroup:{type:["string","null"]},fov:{type:"number"},far:{type:"number"},near:{type:"number"},focus:{type:"number"},distance:{type:"number"},minDistance:{type:"number"},maxDistance:{type:"number"},polarAngle:{type:"number"},minPolarAngle:{type:"number"},maxPolarAngle:{type:"number"},azimuthAngle:{type:"number"},minAzimuthAngle:{type:"number"},maxAzimuthAngle:{type:"number"},smoothTime:{type:"number"},draggingSmoothTime:{type:"number"},maxSpeed:{type:"number"},azimuthRotateSpeed:{type:"number"},polarRotateSpeed:{type:"number"},dollySpeed:{type:"number"},dollyDragInverted:{type:"boolean"},truckSpeed:{type:"number"},mouseButtons:{type:"object",properties:{left:{type:"number",enum:[0,1,2,4,8,16]},middle:{type:"number",enum:[0,1,2,4,8,16]},right:{type:"number",enum:[0,1,2,4,8,16]},wheel:{type:"number",enum:[0,1,2,4,8,16]}},required:["left","middle","right","wheel"],additionalProperties:!1},touches:{type:"object",properties:{one:{type:"number",enum:[0,8,16,32,64,128]},two:{type:"number",enum:[0,32,64,128,256,512,1024,2048,4096,8192,16384,32768]},three:{type:"number",enum:[0,32,64,128,256,512,1024,2048,4096,8192,16384,32768]}},required:["one","two","three"],additionalProperties:!1},boundaryEnclosesCamera:{type:"boolean"},dollyToCursor:{type:"boolean"},dragToOffset:{type:"boolean"},verticalDragToForward:{type:"boolean"},boundary:{type:"object"},relative:{type:"boolean"}},required:[],additionalProperties:!1}).build();export const isFitSelectionPerspectiveCameraComponent=t(fitSelectionPerspectiveCameraComponent);
@@ -12,13 +12,13 @@ export interface HorizontalTab {
12
12
  /**
13
13
  * List of navigation states when the tab is active. First one will be used for activation.
14
14
  */
15
- readonly navigationStates: string[];
15
+ readonly navigationStates: readonly string[];
16
16
  }
17
17
  export type HorizontalTabsComponentState = {
18
18
  /**
19
19
  * List of tabs in the horizontal tabs.
20
20
  */
21
- readonly tabs: HorizontalTab[];
21
+ readonly tabs: readonly HorizontalTab[];
22
22
  };
23
23
  export declare const horizontalTabsComponent: import("../index.js").SystemComponentType<"horizontalTabs", HorizontalTabsComponentState, never>;
24
24
  export type HorizontalTabsComponent = typeof horizontalTabsComponent;
@@ -10,7 +10,7 @@ export type ListSelectorDimensionIndicatorComponentState = DimensionIndicatorSta
10
10
  /**
11
11
  * An array of fixable violations. They will be ignored in the violation hint.
12
12
  */
13
- readonly fixableViolations?: string[];
13
+ readonly fixableViolations?: readonly string[];
14
14
  /**
15
15
  * The title of the modal.
16
16
  */
@@ -7,13 +7,13 @@ export interface NavigationStep {
7
7
  /**
8
8
  * List of navigation states when the tab is active. First one will be used for activation.
9
9
  */
10
- readonly navigationStates: string[];
10
+ readonly navigationStates: readonly string[];
11
11
  }
12
12
  export type NavigationStepsComponentState = {
13
13
  /**
14
14
  * List of steps in the top navigation.
15
15
  */
16
- readonly steps: NavigationStep[];
16
+ readonly steps: readonly NavigationStep[];
17
17
  };
18
18
  export declare const navigationStepsComponent: import("../index.js").SystemComponentType<"navigationSteps", NavigationStepsComponentState, never>;
19
19
  export type NavigationStepsComponent = typeof navigationStepsComponent;
@@ -1 +1 @@
1
- import{SystemComponentBuilder as e,isSnapshotOfComponentType as t}from"../core/index.js";import{DimensionUnitSchema as n,UnitsConfigSchema as r}from"../dimensions/index.js";import{DimensionIndicatorBaseProperties as i}from"./common/index.js";export const offsetIndicatorComponent=e.component("offsetIndicator").withState({tsType:"OffsetIndicatorComponentState",import:[{module:"@salsita-ai/sdk/domain",member:"OffsetIndicatorComponentState"}],type:"object",properties:{...i,targetEntityOffsetAnchors:{type:"array",items:{type:"string"}},targetReferenceOffsetAnchors:{type:"array",items:{type:"string"}},referenceEntityIds:{type:"array",items:{type:"string"}},directionVector:{type:"object",properties:{x:{type:"number"},y:{type:"number"},z:{type:"number"}},additionalProperties:!1},directionVectorRelativeToEntityId:{type:"string"},maxDistance:{type:["number","null"]},minDistance:{type:["number","null"]},maxPerpendicularDistance:{type:["number","null"]},minPerpendicularDistance:{type:["number","null"]},visible:{type:"boolean"},force:{type:"boolean"},displayUnit:n,unitDisplayConfig:r},required:["targetEntityOffsetAnchors","targetReferenceOffsetAnchors","directionVector"],additionalProperties:!1}).build();export const isOffsetIndicatorSnapshot=t(offsetIndicatorComponent);
1
+ import{DomainEntityIdSchema as e,SystemComponentBuilder as t,isSnapshotOfComponentType as n}from"../core/index.js";import{DimensionUnitSchema as r,UnitsConfigSchema as o}from"../dimensions/index.js";import{DimensionIndicatorBaseProperties as i}from"./common/index.js";export const offsetIndicatorComponent=t.component("offsetIndicator").withState({tsType:"OffsetIndicatorComponentState",import:[{module:"@salsita-ai/sdk/domain",member:"OffsetIndicatorComponentState"}],type:"object",properties:{...i,targetEntityOffsetAnchors:{type:"array",items:{type:"string"}},targetReferenceOffsetAnchors:{type:"array",items:{type:"string"}},referenceEntityIds:{type:["array","null"],items:e},directionVector:{type:"object",properties:{x:{type:"number"},y:{type:"number"},z:{type:"number"}},additionalProperties:!1},directionVectorRelativeToEntityId:{anyOf:[e,{type:"null"}]},maxDistance:{type:["number","null"]},minDistance:{type:["number","null"]},maxPerpendicularDistance:{type:["number","null"]},minPerpendicularDistance:{type:["number","null"]},visible:{type:"boolean"},force:{type:"boolean"},displayUnit:r,unitDisplayConfig:o},required:["targetEntityOffsetAnchors","targetReferenceOffsetAnchors","directionVector"],additionalProperties:!1}).build();export const isOffsetIndicatorSnapshot=n(offsetIndicatorComponent);
@@ -1,8 +1,8 @@
1
1
  export type RotatableSurface = {
2
2
  /**
3
- * Unique identifier for the surface.
3
+ * Identifier of the surface.
4
4
  */
5
- readonly key: string;
5
+ readonly key?: string;
6
6
  /**
7
7
  * The widget rotation axis in normal form. Usually corresponds to the target object's rotation axis.
8
8
  */
@@ -1,10 +1,10 @@
1
- import { type Color } from '@salsita-ai/common/utils';
1
+ import { type HexColor } from '@salsita-ai/common/utils';
2
2
  export type SaveTemplateThumbnailComponentState = {
3
3
  readonly exportState: string;
4
4
  readonly width: number;
5
5
  readonly height: number;
6
6
  readonly fileFormat: 'PNG' | 'JPEG';
7
- readonly backgroundColor?: Color;
7
+ readonly backgroundColor?: HexColor;
8
8
  readonly toolState: string;
9
9
  readonly viewState: string;
10
10
  readonly navigationState: string;
@@ -1 +1 @@
1
- import{SystemComponentBuilder as t,isSnapshotOfComponentType as e}from"../core/index.js";export const saveTemplateThumbnailComponent=t.component("saveTemplateThumbnail").withState({type:"object",tsType:"SaveTemplateThumbnailComponentState",import:[{module:"@salsita-ai/sdk/domain",member:"SaveTemplateThumbnailComponentState"}],properties:{exportState:{type:"string"},width:{type:"number"},height:{type:"number"},fileFormat:{type:"string",enum:["PNG","JPEG"]},backgroundColor:{type:"string",pattern:"^#[0-9a-fA-F]{6}$"},toolState:{type:"string"},viewState:{type:"string"},navigationState:{type:"string"}},required:["exportState","width","height","fileFormat","toolState","viewState","navigationState"],additionalProperties:!1}).build();export const isSaveTemplateThumbnailComponentSnapshot=e(saveTemplateThumbnailComponent);
1
+ import{SystemComponentBuilder as t,isSnapshotOfComponentType as e}from"../core/index.js";export const saveTemplateThumbnailComponent=t.component("saveTemplateThumbnail").withState({type:"object",tsType:"SaveTemplateThumbnailComponentState",import:[{module:"@salsita-ai/sdk/domain",member:"SaveTemplateThumbnailComponentState"}],properties:{exportState:{type:"string"},width:{type:"number"},height:{type:"number"},fileFormat:{type:"string",enum:["PNG","JPEG"]},backgroundColor:{type:"string",pattern:"^#[0-9a-fA-F]{6}$",tsType:"HexColor",import:[{module:"@salsita-ai/sdk/common/utils",member:"HexColor"}]},toolState:{type:"string"},viewState:{type:"string"},navigationState:{type:"string"}},required:["exportState","width","height","fileFormat","toolState","viewState","navigationState"],additionalProperties:!1}).build();export const isSaveTemplateThumbnailComponentSnapshot=e(saveTemplateThumbnailComponent);
@@ -1 +1 @@
1
- import{SystemComponentBuilder as e}from"../core/index.js";export const sceneEntityAnimationComponent=e.component("sceneEntityAnimation").withState({type:"object",tsType:"SceneEntityAnimationComponentState",import:[{module:"@salsita-ai/sdk/domain",member:"SceneEntityAnimationComponentState"}],properties:{fileUrl:{type:"string"},name:{type:"string"},type:{type:"string"},timeScale:{type:"number"}},required:["fileUrl","name","timeScale","type"],additionalProperties:!1}).build();
1
+ import{SystemComponentBuilder as e}from"../core/index.js";export const sceneEntityAnimationComponent=e.component("sceneEntityAnimation").withState({type:"object",tsType:"SceneEntityAnimationComponentState",import:[{module:"@salsita-ai/sdk/domain",member:"SceneEntityAnimationComponentState"}],properties:{fileUrl:{type:"string"},name:{type:"string"},type:{type:"string",enum:["reversable"]},timeScale:{type:"number"}},required:["fileUrl","name","timeScale","type"],additionalProperties:!1}).build();
@@ -5,7 +5,7 @@ export interface MockTransformer<ENTITIES extends DomainEntity<string>, ALLOWED_
5
5
  transformer: RegistrableTransformer<ENTITIES, ALLOWED_ROOT_ENTITIES, $MAP, NAVIGATION_STATES, VIEW_STATES, TOOL_STATES, EXPORT_STATES>;
6
6
  priority?: number;
7
7
  }
8
- export declare const createMockDomainContext: <ENTITIES extends DomainEntity<string>, ALLOWED_ROOT_ENTITIES extends ENTITIES, $MAP extends Record<ENTITIES['type'], $DomainEntity<ENTITIES>>, NAVIGATION_STATES extends string, VIEW_STATES extends string, TOOL_STATES extends string, EXPORT_STATES extends string, CHAT_CONTEXT extends Record<string, unknown>, PUBLISHED_DATA extends Record<string, unknown>, SESSION_DATA extends Record<string, unknown>, FRONTEND_DATA extends Record<string, unknown>, ADMIN_ENTITIES extends DomainEntity<string>, ADMIN_ALLOWED_ROOT_ENTITIES extends ADMIN_ENTITIES, ADMIN_$MAP extends Record<ADMIN_ENTITIES['type'], $DomainEntity<ADMIN_ENTITIES>>, ADMIN_NAVIGATION_STATES extends string, ADMIN_VIEW_STATES extends string>(cfg: ApplicationConfig<ENTITIES, ALLOWED_ROOT_ENTITIES, $MAP, NAVIGATION_STATES, VIEW_STATES, TOOL_STATES, EXPORT_STATES, CHAT_CONTEXT, PUBLISHED_DATA, SESSION_DATA, FRONTEND_DATA, ADMIN_ENTITIES, ADMIN_ALLOWED_ROOT_ENTITIES, ADMIN_$MAP, ADMIN_NAVIGATION_STATES, ADMIN_VIEW_STATES>, mocks: {
8
+ export declare const createMockDomainContext: <ENTITIES extends DomainEntity<string>, ALLOWED_ROOT_ENTITIES extends ENTITIES, $MAP extends Record<ENTITIES['type'], $DomainEntity<ENTITIES>>, NAVIGATION_STATES extends string, VIEW_STATES extends string, TOOL_STATES extends string, EXPORT_STATES extends string, PUBLISHED_DATA extends Record<string, unknown>, SESSION_DATA extends Record<string, unknown>, FRONTEND_DATA extends Record<string, unknown>>(cfg: ApplicationConfig<ENTITIES, ALLOWED_ROOT_ENTITIES, $MAP, NAVIGATION_STATES, VIEW_STATES, TOOL_STATES, EXPORT_STATES, any, PUBLISHED_DATA, SESSION_DATA, FRONTEND_DATA, any, any, any, any, any>, mocks: {
9
9
  frontendData: FRONTEND_DATA;
10
10
  publishedData: PUBLISHED_DATA;
11
11
  sessionData: SESSION_DATA;
@@ -1,3 +1,4 @@
1
+ import { AccessLevel } from '@salsita-ai/contracts/api';
1
2
  import type { ApplicationConfig } from '../application/index.js';
2
3
  import type { $DomainEntity, DomainEntity } from '../core/index.js';
3
4
  import type { RegistrableTransformer } from '../domain-context/index.js';
@@ -15,7 +16,7 @@ import type { RegistrableTransformer } from '../domain-context/index.js';
15
16
  *
16
17
  * Contributing no extension systems is the same shape webhook and finalize hosts run in.
17
18
  */
18
- export declare const createMockDomainRuntime: <ENTITIES extends DomainEntity<string>, ALLOWED_ROOT_ENTITIES extends ENTITIES, $MAP extends Record<ENTITIES['type'], $DomainEntity<ENTITIES>>, NAVIGATION_STATES extends string, VIEW_STATES extends string, TOOL_STATES extends string, EXPORT_STATES extends string, CHAT_CONTEXT extends Record<string, unknown>, PUBLISHED_DATA extends Record<string, unknown>, SESSION_DATA extends Record<string, unknown>, FRONTEND_DATA extends Record<string, unknown>, ADMIN_ENTITIES extends DomainEntity<string>, ADMIN_ALLOWED_ROOT_ENTITIES extends ADMIN_ENTITIES, ADMIN_$MAP extends Record<ADMIN_ENTITIES['type'], $DomainEntity<ADMIN_ENTITIES>>, ADMIN_NAVIGATION_STATES extends string, ADMIN_VIEW_STATES extends string>(config: ApplicationConfig<ENTITIES, ALLOWED_ROOT_ENTITIES, $MAP, NAVIGATION_STATES, VIEW_STATES, TOOL_STATES, EXPORT_STATES, CHAT_CONTEXT, PUBLISHED_DATA, SESSION_DATA, FRONTEND_DATA, ADMIN_ENTITIES, ADMIN_ALLOWED_ROOT_ENTITIES, ADMIN_$MAP, ADMIN_NAVIGATION_STATES, ADMIN_VIEW_STATES>, mocks: {
19
+ export declare const createMockDomainRuntime: <ENTITIES extends DomainEntity<string>, ALLOWED_ROOT_ENTITIES extends ENTITIES, $MAP extends Record<ENTITIES['type'], $DomainEntity<ENTITIES>>, NAVIGATION_STATES extends string, VIEW_STATES extends string, TOOL_STATES extends string, EXPORT_STATES extends string, PUBLISHED_DATA extends Record<string, unknown>, SESSION_DATA extends Record<string, unknown>, FRONTEND_DATA extends Record<string, unknown>>(config: ApplicationConfig<ENTITIES, ALLOWED_ROOT_ENTITIES, $MAP, NAVIGATION_STATES, VIEW_STATES, TOOL_STATES, EXPORT_STATES, any, PUBLISHED_DATA, SESSION_DATA, FRONTEND_DATA, any, any, any, any, any>, mocks: {
19
20
  frontendData: FRONTEND_DATA;
20
21
  publishedData: PUBLISHED_DATA;
21
22
  sessionData: SESSION_DATA;
@@ -268,24 +269,28 @@ export declare const createMockDomainRuntime: <ENTITIES extends DomainEntity<str
268
269
  access: {
269
270
  selectConfiguratorRawAccessInfo: import("@salsita-ai/common/utils").Selector<import("../index.js").AccessSelectorState, {
270
271
  raw: string;
272
+ access: AccessLevel;
271
273
  viewMode: boolean;
272
274
  revisionId: string | undefined;
273
275
  configurationId: string;
274
276
  } | null>;
275
277
  selectAdminRawAccessInfo: import("@salsita-ai/common/utils").Selector<import("../index.js").AccessSelectorState, {
276
278
  raw: string;
279
+ access: AccessLevel;
277
280
  viewMode: boolean;
278
281
  revisionId: string | undefined;
279
282
  configurationId: string;
280
283
  } | null>;
281
284
  selectConfiguratorAccessInfo: import("@salsita-ai/common/utils").Selector<import("../index.js").AccessSelectorState, {
282
285
  raw: string;
286
+ access: AccessLevel;
283
287
  viewMode: boolean;
284
288
  revisionId: string | undefined;
285
289
  configurationId: string;
286
290
  }>;
287
291
  selectAdminAccessInfo: import("@salsita-ai/common/utils").Selector<import("../index.js").AccessSelectorState, {
288
292
  raw: string;
293
+ access: AccessLevel;
289
294
  viewMode: boolean;
290
295
  revisionId: string | undefined;
291
296
  configurationId: string;
@@ -298,24 +303,28 @@ export declare const createMockDomainRuntime: <ENTITIES extends DomainEntity<str
298
303
  selectAdminConfigurationId: import("@salsita-ai/common/utils").Selector<import("../index.js").AccessSelectorState, string>;
299
304
  getConfiguratorRawAccessInfo: () => {
300
305
  raw: string;
306
+ access: AccessLevel;
301
307
  viewMode: boolean;
302
308
  revisionId: string | undefined;
303
309
  configurationId: string;
304
310
  } | null;
305
311
  getAdminRawAccessInfo: () => {
306
312
  raw: string;
313
+ access: AccessLevel;
307
314
  viewMode: boolean;
308
315
  revisionId: string | undefined;
309
316
  configurationId: string;
310
317
  } | null;
311
318
  getConfiguratorAccessInfo: () => {
312
319
  raw: string;
320
+ access: AccessLevel;
313
321
  viewMode: boolean;
314
322
  revisionId: string | undefined;
315
323
  configurationId: string;
316
324
  };
317
325
  getAdminAccessInfo: () => {
318
326
  raw: string;
327
+ access: AccessLevel;
319
328
  viewMode: boolean;
320
329
  revisionId: string | undefined;
321
330
  configurationId: string;
@@ -361,9 +370,9 @@ export declare const createMockDomainRuntime: <ENTITIES extends DomainEntity<str
361
370
  selectIsViewMode: import("@salsita-ai/common/utils").Selector<import("../index.js").DomainContextSelectorState, boolean>;
362
371
  selectInitializationState: import("@salsita-ai/common/utils").Selector<import("../index.js").DomainContextSelectorState, import("../index.js").DomainContextInitializationState>;
363
372
  selectComponentOptics: import("@salsita-ai/common/utils").Selector<import("../index.js").DomainContextSelectorState, readonly import("../index.js").AnyDomainComponentOptic[]>;
364
- selectComponentReaderIndexes: import("@salsita-ai/common/utils").Selector<import("../index.js").DomainContextSelectorState, import("../index.js").ComponentReaderIndexes<any, any, any, any, any>>;
373
+ selectComponentReaderIndexes: import("@salsita-ai/common/utils").Selector<import("../index.js").DomainContextSelectorState, import("../index.js").ComponentReaderIndexes>;
365
374
  selectStoreRuntimeDependencies: import("@salsita-ai/common/utils").Selector<import("../index.js").DomainContextSelectorState, {
366
- componentReaderIndexes: import("../index.js").ComponentReaderIndexes<any, any, any, any, any>;
375
+ componentReaderIndexes: import("../index.js").ComponentReaderIndexes;
367
376
  domainExpressions: import("../index.js").AnyExpressions;
368
377
  allowedRootEntityTypes: import("../index.js").AnyAllowedRootEntityTypes;
369
378
  }>;
@@ -403,9 +412,9 @@ export declare const createMockDomainRuntime: <ENTITIES extends DomainEntity<str
403
412
  getMigrate: () => import("../index.js").MigrateFunction<DomainEntity<string>>;
404
413
  getActiveMode: () => import("../index.js").DomainMode;
405
414
  getIsInitialized: () => boolean;
406
- getComponentReaderIndexes: () => import("../index.js").ComponentReaderIndexes<any, any, any, any, any>;
415
+ getComponentReaderIndexes: () => import("../index.js").ComponentReaderIndexes;
407
416
  getStoreRuntimeDependencies: () => {
408
- componentReaderIndexes: import("../index.js").ComponentReaderIndexes<any, any, any, any, any>;
417
+ componentReaderIndexes: import("../index.js").ComponentReaderIndexes;
409
418
  domainExpressions: import("../index.js").AnyExpressions;
410
419
  allowedRootEntityTypes: import("../index.js").AnyAllowedRootEntityTypes;
411
420
  };
@@ -470,9 +479,9 @@ export declare const createMockDomainRuntime: <ENTITIES extends DomainEntity<str
470
479
  selectIsViewMode: import("@salsita-ai/common/utils").Selector<import("../index.js").DomainContextSelectorState, boolean>;
471
480
  selectInitializationState: import("@salsita-ai/common/utils").Selector<import("../index.js").DomainContextSelectorState, import("../index.js").DomainContextInitializationState>;
472
481
  selectComponentOptics: import("@salsita-ai/common/utils").Selector<import("../index.js").DomainContextSelectorState, readonly import("../index.js").AnyDomainComponentOptic[]>;
473
- selectComponentReaderIndexes: import("@salsita-ai/common/utils").Selector<import("../index.js").DomainContextSelectorState, import("../index.js").ComponentReaderIndexes<any, any, any, any, any>>;
482
+ selectComponentReaderIndexes: import("@salsita-ai/common/utils").Selector<import("../index.js").DomainContextSelectorState, import("../index.js").ComponentReaderIndexes>;
474
483
  selectStoreRuntimeDependencies: import("@salsita-ai/common/utils").Selector<import("../index.js").DomainContextSelectorState, {
475
- componentReaderIndexes: import("../index.js").ComponentReaderIndexes<any, any, any, any, any>;
484
+ componentReaderIndexes: import("../index.js").ComponentReaderIndexes;
476
485
  domainExpressions: import("../index.js").AnyExpressions;
477
486
  allowedRootEntityTypes: import("../index.js").AnyAllowedRootEntityTypes;
478
487
  }>;
@@ -512,9 +521,9 @@ export declare const createMockDomainRuntime: <ENTITIES extends DomainEntity<str
512
521
  getMigrate: () => import("../index.js").MigrateFunction<DomainEntity<string>>;
513
522
  getActiveMode: () => import("../index.js").DomainMode;
514
523
  getIsInitialized: () => boolean;
515
- getComponentReaderIndexes: () => import("../index.js").ComponentReaderIndexes<any, any, any, any, any>;
524
+ getComponentReaderIndexes: () => import("../index.js").ComponentReaderIndexes;
516
525
  getStoreRuntimeDependencies: () => {
517
- componentReaderIndexes: import("../index.js").ComponentReaderIndexes<any, any, any, any, any>;
526
+ componentReaderIndexes: import("../index.js").ComponentReaderIndexes;
518
527
  domainExpressions: import("../index.js").AnyExpressions;
519
528
  allowedRootEntityTypes: import("../index.js").AnyAllowedRootEntityTypes;
520
529
  };
@@ -1 +1 @@
1
- import{createDomainRuntime as o}from"../domain-runtime/index.js";import{createMockDomainRuntimeServices as t}from"./create-mock-domain-runtime-services.js";import{createMockSessionContext as e}from"./create-mock-session-context.js";export const createMockDomainRuntime=(a,i)=>{let{sessionData:n,mode:r,role:s}=i,c=o({config:a,services:t()}),m=c.getState().spec;return c.actions.spec.updateSpec({...m,configurator:{...m.configurator,createTransformers:o=>i.transformers.map(t=>t.transformer.register(o,t.priority??1/0))}}),c.actions.sessionContext.setSessionContext(e(s,n)),c.actions.access.setConfiguratorAccessInfo({raw:"mock-access-token",viewMode:"read"===r,revisionId:void 0,configurationId:"mock"}),c.actions.domainData.setDomainData({publishedData:i.publishedData,frontendData:i.frontendData,backendData:i.backendData}),c.actions.loadedData.completeConfiguratorLoad({initialRevisionId:"mock-revision",initialEntities:i.entities,modelVersion:a.domain.domainFactory.modelVersion,rootEntityType:i.rootEntityType,schemaIdentity:a.domain.domainFactory}),c};
1
+ import{AccessLevel as t}from"@salsita-ai/contracts/api";import{createDomainRuntime as e}from"../domain-runtime/index.js";import{createMockDomainRuntimeServices as o}from"./create-mock-domain-runtime-services.js";import{createMockSessionContext as a}from"./create-mock-session-context.js";export const createMockDomainRuntime=(i,n)=>{let{sessionData:r,mode:s,role:c}=n,m=e({config:i,services:o()}),d=m.getState().spec;return m.actions.spec.updateSpec({...d,configurator:{...d.configurator,createTransformers:t=>n.transformers.map(e=>e.transformer.register(t,e.priority??1/0))}}),m.actions.sessionContext.setSessionContext(a(c,r)),m.actions.access.setConfiguratorAccessInfo({raw:"mock-access-token",access:"read"===s?t.Read:t.Owner,viewMode:"read"===s,revisionId:void 0,configurationId:"mock"}),m.actions.domainData.setDomainData({publishedData:n.publishedData,frontendData:n.frontendData,backendData:n.backendData}),m.actions.loadedData.completeConfiguratorLoad({initialRevisionId:"mock-revision",initialEntities:n.entities,modelVersion:i.domain.domainFactory.modelVersion,rootEntityType:n.rootEntityType,schemaIdentity:i.domain.domainFactory}),m};
@@ -1,6 +1,6 @@
1
1
  import type { ApplicationConfig } from '../application/index.js';
2
2
  import type { $DomainEntity, Domain, DomainEntity, DomainMode } from '../core/index.js';
3
- export declare const createMockDomain: <ENTITIES extends DomainEntity<string>, ALLOWED_ROOT_ENTITIES extends ENTITIES, $MAP extends Record<ENTITIES['type'], $DomainEntity<ENTITIES>>, NAVIGATION_STATES extends string, VIEW_STATES extends string, TOOL_STATES extends string, EXPORT_STATES extends string, CHAT_CONTEXT extends Record<string, unknown>, PUBLISHED_DATA extends Record<string, unknown>, SESSION_DATA extends Record<string, unknown>, FRONTEND_DATA extends Record<string, unknown>, ADMIN_ENTITIES extends DomainEntity<string>, ADMIN_ALLOWED_ROOT_ENTITIES extends ADMIN_ENTITIES, ADMIN_$MAP extends Record<ADMIN_ENTITIES['type'], $DomainEntity<ADMIN_ENTITIES>>, ADMIN_NAVIGATION_STATES extends string, ADMIN_VIEW_STATES extends string>(cfg: ApplicationConfig<ENTITIES, ALLOWED_ROOT_ENTITIES, $MAP, NAVIGATION_STATES, VIEW_STATES, TOOL_STATES, EXPORT_STATES, CHAT_CONTEXT, PUBLISHED_DATA, SESSION_DATA, FRONTEND_DATA, ADMIN_ENTITIES, ADMIN_ALLOWED_ROOT_ENTITIES, ADMIN_$MAP, ADMIN_NAVIGATION_STATES, ADMIN_VIEW_STATES>, mocks: {
3
+ export declare const createMockDomain: <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>>(cfg: ApplicationConfig<ENTITIES, ALLOWED_ROOT_ENTITIES, $MAP, any, any, any, any, any, PUBLISHED_DATA, SESSION_DATA, FRONTEND_DATA, any, any, any, any, any>, mocks: {
4
4
  frontendData: FRONTEND_DATA;
5
5
  publishedData: PUBLISHED_DATA;
6
6
  sessionData: SESSION_DATA;
@@ -1 +1 @@
1
- import{createDomainRuntime as o}from"../domain-runtime/index.js";import{createMockDomainRuntimeServices as e}from"./create-mock-domain-runtime-services.js";import{createMockSessionContext as t}from"./create-mock-session-context.js";export const createMockDomain=(i,n)=>{let{frontendData:s,publishedData:a,sessionData:c,backendData:r,mode:m,role:d}=n,f=o({config:i,services:e()});return f.actions.access.setConfiguratorAccessInfo({raw:"mock-access-token",viewMode:"read"===m,revisionId:void 0,configurationId:"mock-configuration"}),"finalize"===m&&f.actions.domainContext.configurator.setExecutionMode("finalize"),f.actions.domainData.setDomainData({publishedData:a,frontendData:s,backendData:r}),f.actions.sessionContext.setSessionContext(t(d,c)),f.selectors.domainContext.configurator.getDomain()};
1
+ import{AccessLevel as o}from"@salsita-ai/contracts/api";import{createDomainRuntime as e}from"../domain-runtime/index.js";import{createMockDomainRuntimeServices as t}from"./create-mock-domain-runtime-services.js";import{createMockSessionContext as i}from"./create-mock-session-context.js";export const createMockDomain=(n,a)=>{let{frontendData:s,publishedData:c,sessionData:r,backendData:m,mode:d,role:f}=a,u=e({config:n,services:t()});return u.actions.access.setConfiguratorAccessInfo({raw:"mock-access-token",access:"read"===d?o.Read:o.Owner,viewMode:"read"===d,revisionId:void 0,configurationId:"mock-configuration"}),"finalize"===d&&u.actions.domainContext.configurator.setExecutionMode("finalize"),u.actions.domainData.setDomainData({publishedData:c,frontendData:s,backendData:m}),u.actions.sessionContext.setSessionContext(i(f,r)),u.selectors.domainContext.configurator.getDomain()};
@@ -1,6 +1,6 @@
1
1
  import type { ApplicationConfig } from '../application/index.js';
2
- import type { $DomainEntity, DomainEntity, DomainState } from '../core/index.js';
3
- export declare const createMockState: <ENTITIES extends DomainEntity<string>, ALLOWED_ROOT_ENTITIES extends ENTITIES, $MAP extends Record<ENTITIES['type'], $DomainEntity<ENTITIES>>, NAVIGATION_STATES extends string, VIEW_STATES extends string, TOOL_STATES extends string, EXPORT_STATES extends string, CHAT_CONTEXT extends Record<string, unknown>, PUBLISHED_DATA extends Record<string, unknown>, SESSION_DATA extends Record<string, unknown>, FRONTEND_DATA extends Record<string, unknown>, ADMIN_ENTITIES extends DomainEntity<string>, ADMIN_ALLOWED_ROOT_ENTITIES extends ADMIN_ENTITIES, ADMIN_$MAP extends Record<ADMIN_ENTITIES['type'], $DomainEntity<ADMIN_ENTITIES>>, ADMIN_NAVIGATION_STATES extends string, ADMIN_VIEW_STATES extends string>(cfg: ApplicationConfig<ENTITIES, ALLOWED_ROOT_ENTITIES, $MAP, NAVIGATION_STATES, VIEW_STATES, TOOL_STATES, EXPORT_STATES, CHAT_CONTEXT, PUBLISHED_DATA, SESSION_DATA, FRONTEND_DATA, ADMIN_ENTITIES, ADMIN_ALLOWED_ROOT_ENTITIES, ADMIN_$MAP, ADMIN_NAVIGATION_STATES, ADMIN_VIEW_STATES>, mocks: {
2
+ import type { DomainEntity, DomainState } from '../core/index.js';
3
+ export declare const createMockState: <ENTITIES extends DomainEntity<string>, ALLOWED_ROOT_ENTITIES extends ENTITIES>(cfg: ApplicationConfig<ENTITIES, ALLOWED_ROOT_ENTITIES, any, any, any, any, any, any, any, any, any, any, any, any, any, any>, mocks: {
4
4
  entities: ENTITIES[];
5
5
  rootEntityType: ALLOWED_ROOT_ENTITIES['type'];
6
6
  }) => DomainState<ENTITIES>;
@@ -0,0 +1,59 @@
1
+ import type { TransformersConfig } from '../application/index.js';
2
+ import type { ProjectModule } from '../domain-runtime/index.js';
3
+ /**
4
+ * What a project's test adds to its generated application before it builds the config.
5
+ *
6
+ * Each option names a part of the application config: the test states what it wants in the
7
+ * application, not how the application is assembled.
8
+ */
9
+ export interface TestApplicationOptions {
10
+ /**
11
+ * Component files added after the components the generated application already has, for example
12
+ * the `customComponentOptics` of `.phoenix/configurator-domain-code.js`, which the configurator and
13
+ * the webhooks add to the domain the generated `configuratorBuilder` describes.
14
+ */
15
+ readonly componentModules?: readonly ProjectModule[];
16
+ /**
17
+ * The transformers of the application: the `src/transformers/` files the test runs, and the
18
+ * entries of the spec's `transformers` section that select and order them. Replaces the
19
+ * transformers the generated application has.
20
+ */
21
+ readonly transformers?: TransformersConfig;
22
+ /**
23
+ * The tag of the custom element the application mounts as. Without it the config keeps the tag of
24
+ * the generated application, which is `salsita-configurator` unless the application names another.
25
+ */
26
+ readonly tag?: string;
27
+ }
28
+ /**
29
+ * The shape of a generated application export (`configuratorBuilder` of `.phoenix/domain.js`,
30
+ * `configuratorConfig` of `.phoenix/configurator-config.js`) that the helper reads. `CONFIG` is the
31
+ * application config the export builds, with the project's types, so the result needs no type argument.
32
+ */
33
+ interface GeneratedApplication<CONFIG> {
34
+ withComponentOptics(componentModules: readonly ProjectModule[]): GeneratedApplication<CONFIG>;
35
+ withTransformers(importedTransformers: TransformersConfig['importedTransformers'], specTransformers: TransformersConfig['specTransformers']): GeneratedApplication<CONFIG>;
36
+ withWebComponentTag(tag: string): GeneratedApplication<CONFIG>;
37
+ buildConfig(): CONFIG;
38
+ }
39
+ /**
40
+ * Builds the application config of a project for its tests, from the generated application export
41
+ * the test imports and the parts the test adds. The config carries the project's types, so it goes
42
+ * straight into `createDomainRuntime`, `createMockDomainContext`, `createMockState` or a mounted
43
+ * custom element, and its `initialPublishedData`, `domain.presets` and domain factories are the ones
44
+ * the deployed application starts with.
45
+ *
46
+ * This is the way a project's test builds its application. Its call does not depend on how the SDK
47
+ * assembles an application, so a test written against it needs no change when that assembly changes.
48
+ *
49
+ * @example
50
+ * const config = createTestApplicationConfig(configuratorBuilder, {
51
+ * componentModules: customComponentOptics,
52
+ * transformers: {
53
+ * importedTransformers: [{ origin: 'src/transformers/add-cooking-top.ts', exports: addCookingTop }],
54
+ * specTransformers: [{ name: 'addCookingTop', priority: 30 }],
55
+ * },
56
+ * })
57
+ */
58
+ export declare const createTestApplicationConfig: <CONFIG>(application: GeneratedApplication<CONFIG>, options?: TestApplicationOptions) => CONFIG;
59
+ export {};
@@ -0,0 +1 @@
1
+ export const createTestApplicationConfig=(e,o={})=>{let{componentModules:r,transformers:t,tag:n}=o,i=e;return r&&(i=i.withComponentOptics(r)),t&&(i=i.withTransformers(t.importedTransformers,t.specTransformers)),void 0!==n&&(i=i.withWebComponentTag(n)),i.buildConfig()};
@@ -4,3 +4,4 @@ export { createMockDomainContext, type MockTransformer } from './create-mock-dom
4
4
  export { createMockDomainRuntime } from './create-mock-domain-runtime.js';
5
5
  export { createMockSessionContext } from './create-mock-session-context.js';
6
6
  export { createMockDomainRuntimeServices } from './create-mock-domain-runtime-services.js';
7
+ export { type TestApplicationOptions, createTestApplicationConfig } from './create-test-application-config.js';
@@ -1 +1 @@
1
- export{createMockDomain}from"./create-mock-domain.js";export{createMockState}from"./create-mock-state.js";export{createMockDomainContext}from"./create-mock-domain-context.js";export{createMockDomainRuntime}from"./create-mock-domain-runtime.js";export{createMockSessionContext}from"./create-mock-session-context.js";export{createMockDomainRuntimeServices}from"./create-mock-domain-runtime-services.js";
1
+ export{createMockDomain}from"./create-mock-domain.js";export{createMockState}from"./create-mock-state.js";export{createMockDomainContext}from"./create-mock-domain-context.js";export{createMockDomainRuntime}from"./create-mock-domain-runtime.js";export{createMockSessionContext}from"./create-mock-session-context.js";export{createMockDomainRuntimeServices}from"./create-mock-domain-runtime-services.js";export{createTestApplicationConfig}from"./create-test-application-config.js";
@@ -8,4 +8,4 @@ export interface BlenderCameraProjectionContext {
8
8
  readonly dimensionSystem: Pick<AnyDimensionSystem, 'getDataDistanceUnit'>;
9
9
  readonly positionProjections: Pick<AnyPositionProjections, 'getEntityWorldMatrix'>;
10
10
  }
11
- export declare const projectBlenderCamera: <ENTITIES extends DomainEntity<string>>(state: DomainState<ENTITIES>, imageSize: BlenderImageSize, context: BlenderCameraProjectionContext) => BlenderCamera;
11
+ export declare const projectBlenderCamera: (state: DomainState<DomainEntity<string>>, imageSize: BlenderImageSize, context: BlenderCameraProjectionContext) => BlenderCamera;
@@ -38,7 +38,7 @@ export type ApplicationConfigComponentState = {
38
38
  /**
39
39
  * Array of available dimensions in the application. It will be possible to select them in toolbar if more than one is available.
40
40
  */
41
- readonly availableDimensions?: DimensionUnit[];
41
+ readonly availableDimensions?: readonly DimensionUnit[];
42
42
  /**
43
43
  * When true, the sidebar will be split, it will show the tabs and the header, otherwise it will not.
44
44
  *
@@ -83,7 +83,7 @@ export type ApplicationConfigComponentState = {
83
83
  /**
84
84
  * Locales that user can select in the language switcher. Default ['en'].
85
85
  */
86
- readonly availableLocales?: string[];
86
+ readonly availableLocales?: readonly string[];
87
87
  /**
88
88
  * Initial state of dimension indicators. Default false.
89
89
  */
@@ -1 +1 @@
1
- import{EnhancedLocalizableSchema as e}from"@salsita-ai/common/utils";import{SystemComponentBuilder as t}from"../core/index.js";import{recipeSchema as i}from"./common/recipes.js";export const childEntitySelectionComponent=t.component("childEntitySelection").withState({type:"object",tsType:"ChildEntitySelectionComponentState",import:[{module:"@salsita-ai/sdk/domain",member:"ChildEntitySelectionComponentState"}],properties:{value:{type:"string"},options:{type:"array",items:{type:"object",properties:{label:e,description:e,img:e,recipes:{type:"array",items:i},keepChildren:{type:"boolean"}},required:["recipes","label"],additionalProperties:!0}}},required:["value","options"],additionalProperties:!1}).build();
1
+ import{EnhancedLocalizableSchema as e}from"@salsita-ai/common/utils";import{DomainEntityIdSchema as t,SystemComponentBuilder as i}from"../core/index.js";import{recipeSchema as o}from"./common/recipes.js";export const childEntitySelectionComponent=i.component("childEntitySelection").withState({type:"object",tsType:"ChildEntitySelectionComponentState",import:[{module:"@salsita-ai/sdk/domain",member:"ChildEntitySelectionComponentState"}],properties:{value:t,options:{type:"array",items:{type:"object",properties:{label:e,description:e,img:e,recipes:{type:"array",items:o},keepChildren:{type:"boolean"}},required:["recipes","label"],additionalProperties:!0}}},required:["value","options"],additionalProperties:!1}).build();
@@ -1,4 +1,3 @@
1
- import type { Color } from '@salsita-ai/common/utils';
2
1
  import { type ComponentSnapshot } from '../core/index.js';
3
2
  /**
4
3
  * Axis-aligned box collision geometry, authored via per-axis start/end
@@ -14,7 +13,10 @@ export type CollisionBoxGeometryComponentState = {
14
13
  readonly endY: number;
15
14
  readonly startZ: number;
16
15
  readonly endZ: number;
17
- readonly color: Color;
16
+ /**
17
+ * Colour of the collision mesh's wireframe material, any CSS colour string that three.js `Color` accepts.
18
+ */
19
+ readonly color: string;
18
20
  };
19
21
  export declare const collisionBoxGeometryComponent: import("../index.js").SystemComponentType<"collisionBoxGeometry", CollisionBoxGeometryComponentState, never>;
20
22
  export type CollisionBoxGeometryComponent = typeof collisionBoxGeometryComponent;
@@ -1,4 +1,3 @@
1
- import type { Color } from '@salsita-ai/common/utils';
2
1
  import { type ComponentSnapshot } from '../core/index.js';
3
2
  /**
4
3
  * Mesh-backed collision geometry. The caller supplies a pre-built
@@ -10,7 +9,10 @@ import { type ComponentSnapshot } from '../core/index.js';
10
9
  */
11
10
  export type CollisionGeometryComponentState = {
12
11
  readonly geometry: THREE.BufferGeometry;
13
- readonly color: Color;
12
+ /**
13
+ * Colour of the collision mesh's wireframe material, any CSS colour string that three.js `Color` accepts.
14
+ */
15
+ readonly color: string;
14
16
  };
15
17
  export declare const collisionGeometryComponent: import("../index.js").SystemComponentType<"collisionGeometry", CollisionGeometryComponentState, never>;
16
18
  export type CollisionGeometryComponent = typeof collisionGeometryComponent;
@@ -1,4 +1,3 @@
1
- import type { Color } from '@salsita-ai/common/utils';
2
1
  import { type ComponentSnapshot } from '../core/index.js';
3
2
  /**
4
3
  * Zero-volume point collision geometry at a local `(x, y, z)`. Authored
@@ -12,7 +11,10 @@ export type CollisionPointGeometryComponentState = {
12
11
  readonly x: number;
13
12
  readonly y: number;
14
13
  readonly z: number;
15
- readonly color: Color;
14
+ /**
15
+ * Colour of the collision mesh's wireframe material, any CSS colour string that three.js `Color` accepts.
16
+ */
17
+ readonly color: string;
16
18
  };
17
19
  export declare const collisionPointGeometryComponent: import("../index.js").SystemComponentType<"collisionPointGeometry", CollisionPointGeometryComponentState, never>;
18
20
  export type CollisionPointGeometryComponent = typeof collisionPointGeometryComponent;
@@ -100,8 +100,8 @@ export type MaterialOverrideBaseState = {
100
100
  clearcoatRoughnessMapUrl?: string | null | undefined;
101
101
  /** URL of the iridescence map texture. */
102
102
  iridescenceMapUrl?: string | null | undefined;
103
- /** Range of iridescence thickness. */
104
- iridescenceThicknessRange?: [number, number] | undefined;
103
+ /** Range of iridescence thickness: the minimum and the maximum, two numbers. */
104
+ iridescenceThicknessRange?: readonly number[] | undefined;
105
105
  /** URL of the iridescence thickness map texture. */
106
106
  iridescenceThicknessMapUrl?: string | null | undefined;
107
107
  /** URL of the sheen color map texture. */
@@ -1,5 +1,5 @@
1
1
  import { type Localizable } from '@salsita-ai/common/utils';
2
- import type { DomainEntity, EntityRecipe } from '../../core/index.js';
2
+ import { type DomainEntity, type EntityRecipe } from '../../core/index.js';
3
3
  export interface RecipeListItem {
4
4
  /**
5
5
  * Stable identifier of the recipe within its list, independent of the language and of the title.
@@ -29,8 +29,17 @@ export declare const recipeSchema: {
29
29
  readonly type: {
30
30
  readonly type: 'string';
31
31
  };
32
+ readonly id: {
33
+ readonly type: 'string';
34
+ readonly pattern: '^[A-Z]\\w*-\\d+$';
35
+ readonly import: [{
36
+ readonly module: '@salsita-ai/sdk/domain';
37
+ readonly member: 'DomainEntityId';
38
+ }];
39
+ readonly tsType: 'DomainEntityId';
40
+ };
32
41
  };
33
- readonly required: ["type"];
42
+ readonly required: ["type", "id"];
34
43
  readonly additionalProperties: true;
35
44
  };
36
45
  export declare const recipeListItemSchema: {
@@ -89,8 +98,17 @@ export declare const recipeListItemSchema: {
89
98
  readonly type: {
90
99
  readonly type: 'string';
91
100
  };
101
+ readonly id: {
102
+ readonly type: 'string';
103
+ readonly pattern: '^[A-Z]\\w*-\\d+$';
104
+ readonly import: [{
105
+ readonly module: '@salsita-ai/sdk/domain';
106
+ readonly member: 'DomainEntityId';
107
+ }];
108
+ readonly tsType: 'DomainEntityId';
109
+ };
92
110
  };
93
- readonly required: ["type"];
111
+ readonly required: ["type", "id"];
94
112
  readonly additionalProperties: true;
95
113
  };
96
114
  };
@@ -1 +1 @@
1
- import{EnhancedLocalizableSchema as e}from"@salsita-ai/common/utils";export const recipeSchema={type:"object",properties:{type:{type:"string"}},required:["type"],additionalProperties:!0};export const recipeListItemSchema={type:"object",properties:{key:{type:"string"},title:e,description:e,thumbnailUrl:e,recipes:{type:"array",items:recipeSchema}},required:["title","recipes"],additionalProperties:!1};export const GroupedRecipesSchema={type:"object",tsType:"GroupedRecipes",import:[{module:"@salsita-ai/sdk/domain",member:"GroupedRecipes"}],properties:{instanceNames:{type:"array",items:{type:"string"}}},required:["instanceNames"]};export const GroupedRecipeGroupSchema={type:"object",tsType:"GroupedRecipeGroup",import:[{module:"@salsita-ai/sdk/domain",member:"GroupedRecipeGroup"}],properties:{label:e,description:e,thumbnailUrl:e,children:{$ref:"#/definitions/GroupedRecipeItems"}},required:["label","children"],additionalProperties:!1};export const GroupedRecipeItemsSchema={tsType:"GroupedRecipeItems",import:[{module:"@salsita-ai/sdk/domain",member:"GroupedRecipeItems"}],anyOf:[{type:"array",items:GroupedRecipeGroupSchema},GroupedRecipesSchema]};
1
+ import{EnhancedLocalizableSchema as e}from"@salsita-ai/common/utils";import{DomainEntityIdSchema as i}from"../../core/index.js";export const recipeSchema={type:"object",properties:{type:{type:"string"},id:i},required:["type","id"],additionalProperties:!0};export const recipeListItemSchema={type:"object",properties:{key:{type:"string"},title:e,description:e,thumbnailUrl:e,recipes:{type:"array",items:recipeSchema}},required:["title","recipes"],additionalProperties:!1};export const GroupedRecipesSchema={type:"object",tsType:"GroupedRecipes",import:[{module:"@salsita-ai/sdk/domain",member:"GroupedRecipes"}],properties:{instanceNames:{type:"array",items:{type:"string"}}},required:["instanceNames"]};export const GroupedRecipeGroupSchema={type:"object",tsType:"GroupedRecipeGroup",import:[{module:"@salsita-ai/sdk/domain",member:"GroupedRecipeGroup"}],properties:{label:e,description:e,thumbnailUrl:e,children:{$ref:"#/definitions/GroupedRecipeItems"}},required:["label","children"],additionalProperties:!1};export const GroupedRecipeItemsSchema={tsType:"GroupedRecipeItems",import:[{module:"@salsita-ai/sdk/domain",member:"GroupedRecipeItems"}],anyOf:[{type:"array",items:GroupedRecipeGroupSchema},GroupedRecipesSchema]};
@@ -13,25 +13,23 @@ export type SpatialPredicateName = 'disjoint' | 'touches' | 'within';
13
13
  * Authored in YAML via an expression that resolves to the container's
14
14
  * `DomainEntityId`, e.g. `container: { $read: $sceneId }`. If the
15
15
  * expression resolves to `null` / `undefined` / missing the rule is treated
16
- * as not-applicable (no clamp, no violation). `undefined` is included so
17
- * codegen-emitted reads (e.g. `SpatialConstraint['container']`, which
18
- * resolves to `SpatialConstraintContainer | undefined` because `container`
19
- * is absent on the `disjoint` / `touches` variants) round-trip back into a
20
- * `within` rule's `container` field without a cast.
16
+ * as not-applicable (no clamp, no violation).
21
17
  */
22
18
  export type SpatialConstraintContainer = string | null | undefined;
23
19
  /**
24
- * A single spatial constraint rule. Discriminated on `predicate`.
20
+ * A single spatial constraint rule. `predicate` decides which of the other fields it reads.
25
21
  *
26
- * `disjoint` / `touches` carry a required `group` string. Matching is
22
+ * `disjoint` / `touches` read `group`. Matching is
27
23
  * symmetric: a rule on entity A with `group: G` applies against every
28
24
  * *other* entity whose own constraint component declares the same predicate
29
25
  * with `group: G` — "both sides must opt in to the group". An entity can
30
26
  * join multiple groups by stacking rules. Declaring `disjoint group=G`
31
27
  * simultaneously means "I'm in G" and "I must not overlap anything else in
32
- * G". There is no wildcard: a rule with no matching peers no-ops.
28
+ * G". There is no wildcard: a rule with no matching peers no-ops. A rule
29
+ * without `group` matches the rules of the same predicate that have no
30
+ * `group` either.
33
31
  *
34
- * `within` carries an identity-based `container` and has no group — it
32
+ * `within` reads an identity-based `container` and ignores `group` — it
35
33
  * binds to one specific other entity, not a class.
36
34
  *
37
35
  * Optional `target` names a specific collision-geometry instance on
@@ -70,20 +68,9 @@ export type SpatialConstraintContainer = string | null | undefined;
70
68
  * perimeter.
71
69
  */
72
70
  export type SpatialConstraint = {
73
- readonly predicate: 'disjoint';
74
- readonly group: string;
75
- readonly target?: string;
76
- readonly container?: undefined;
77
- readonly enforce?: boolean;
78
- } | {
79
- readonly predicate: 'touches';
80
- readonly group: string;
81
- readonly target?: string;
82
- readonly container?: undefined;
83
- readonly enforce?: boolean;
84
- } | {
85
- readonly predicate: 'within';
86
- readonly container: SpatialConstraintContainer;
71
+ readonly predicate: SpatialPredicateName;
72
+ readonly group?: string;
73
+ readonly container?: SpatialConstraintContainer;
87
74
  readonly target?: string;
88
75
  readonly enforce?: boolean;
89
76
  };
@@ -6,7 +6,7 @@ export type DragHandleComponentState = {
6
6
  * It is defined in hessian normal form: `normal.x * x + normal.y * y + normal.z * z + constant = 0`
7
7
  * see https://threejs.org/docs/#api/en/math/Plane
8
8
  */
9
- readonly surfaces: DraggableSurface[];
9
+ readonly surfaces: readonly DraggableSurface[];
10
10
  /**
11
11
  * The x property to be updated when the drag handle is dragged.
12
12
  */