@salsita-ai/sdk 0.50.0-develop.9ed52379e9 → 0.50.0-develop.a49722158a

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 (432) hide show
  1. package/README.md +2 -2
  2. package/dist/application-spec/core/components/component-filter.d.ts +53 -0
  3. package/dist/application-spec/core/components/component-filter.js +1 -0
  4. package/dist/application-spec/core/components/index.d.ts +2 -0
  5. package/dist/application-spec/core/components/index.js +1 -0
  6. package/dist/application-spec/core/components/sdk-code-ref.d.ts +9 -0
  7. package/dist/application-spec/core/components/sdk-code-ref.js +1 -0
  8. package/dist/application-spec/core/enhanced-json-value.d.ts +0 -68
  9. package/dist/application-spec/core/enhanced-json-value.js +1 -1
  10. package/dist/application-spec/core/expressions/index.d.ts +2 -0
  11. package/dist/application-spec/core/expressions/index.js +1 -0
  12. package/dist/application-spec/core/expressions/relation-expression-params.d.ts +11 -0
  13. package/dist/application-spec/core/expressions/sdk-expression-implementation.d.ts +24 -0
  14. package/dist/application-spec/core/expressions/sdk-expression-implementation.js +1 -0
  15. package/dist/application-spec/core/index.d.ts +2 -0
  16. package/dist/application-spec/core/index.js +1 -1
  17. package/dist/application-spec/core/json-value.d.ts +1 -1
  18. package/dist/application-spec/{core → enhanced-json}/eval-to-constant.d.ts +1 -1
  19. package/dist/application-spec/enhanced-json/index.d.ts +4 -0
  20. package/dist/application-spec/enhanced-json/index.js +1 -0
  21. package/dist/application-spec/enhanced-json/is-enhanced-json-array.d.ts +2 -0
  22. package/dist/application-spec/enhanced-json/is-enhanced-json-array.js +1 -0
  23. package/dist/application-spec/enhanced-json/resolve-enhanced-json-value.d.ts +18 -0
  24. package/dist/application-spec/enhanced-json/resolve-enhanced-json-value.js +1 -0
  25. package/dist/application-spec/enhanced-json/schema-from-value.d.ts +24 -0
  26. package/dist/application-spec/enhanced-json/schema-from-value.js +1 -0
  27. package/dist/application-spec/enhanced-json/stringify-enhanced-json-value.d.ts +14 -0
  28. package/dist/application-spec/enhanced-json/stringify-enhanced-json-value.js +1 -0
  29. package/dist/application-spec/enhanced-json/validate-enhanced-json-value-caps.d.ts +12 -0
  30. package/dist/application-spec/enhanced-json/validate-enhanced-json-value-caps.js +1 -0
  31. package/dist/application-spec/enhanced-json/validate-no-legacy-code-ref.d.ts +13 -0
  32. package/dist/application-spec/enhanced-json/validate-no-legacy-code-ref.js +1 -0
  33. package/dist/application-spec/errors/diagnostic-codes.d.ts +9 -0
  34. package/dist/application-spec/errors/diagnostic-codes.js +1 -1
  35. package/dist/application-spec/errors/diagnostic-messages.d.ts +12 -0
  36. package/dist/application-spec/errors/diagnostic-messages.js +1 -1
  37. package/dist/application-spec/generate-application/code/project-scaffolding.d.ts +7 -0
  38. package/dist/application-spec/generate-application/code/project-scaffolding.js +2 -2
  39. package/dist/application-spec/generate-application/code/standalone-app-files.d.ts +2 -2
  40. package/dist/application-spec/generate-application/code/standalone-app-files.js +1 -1
  41. package/dist/application-spec/generate-application/code/templates/configurator-config.js +6 -4
  42. package/dist/application-spec/generate-application/code/templates/domain-spec/generate-component-optics.js +4 -4
  43. package/dist/application-spec/generate-application/code/templates/domain-spec/generate-defaults.d.ts +4 -2
  44. package/dist/application-spec/generate-application/code/templates/domain-spec/generate-defaults.js +1 -1
  45. package/dist/application-spec/generate-application/code/templates/domain-spec/generate-domain-block.js +48 -48
  46. package/dist/application-spec/generate-application/code/templates/domain-spec/generate-phx-globals.js +3 -0
  47. package/dist/application-spec/generate-application/code/templates/domain-spec/generate-relation-expressions.js +1 -1
  48. package/dist/application-spec/generate-application/code/templates/domain-spec/generate-resources.d.ts +6 -8
  49. package/dist/application-spec/generate-application/code/templates/domain-spec/generate-resources.js +11 -11
  50. package/dist/application-spec/generate-application/code/templates/domain-spec/index.d.ts +1 -1
  51. package/dist/application-spec/generate-application/code/templates/domain-spec/index.js +1 -1
  52. package/dist/application-spec/generate-application/code/templates/domain-spec.js +12 -12
  53. package/dist/application-spec/generate-application/code/templates/domain.js +3 -3
  54. package/dist/application-spec/generate-application/code/templates/globals.js +5 -4
  55. package/dist/application-spec/generate-application/code/templates/index.d.ts +0 -2
  56. package/dist/application-spec/generate-application/code/templates/index.js +1 -1
  57. package/dist/application-spec/generate-application/code/templates/package-json.js +1 -1
  58. package/dist/application-spec/generate-application/code/templates/skills/phoenix-review-skill.js +8 -2
  59. package/dist/application-spec/generate-application/code/templates/skills/phoenix-skill.js +1 -1
  60. package/dist/application-spec/generate-application/code/templates/skills/sdk-content.d.ts +11 -4
  61. package/dist/application-spec/generate-application/code/templates/skills/sdk-content.js +2 -2
  62. package/dist/application-spec/generate-application/code/templates/webhook-index.d.ts +6 -1
  63. package/dist/application-spec/generate-application/code/templates/webhook-index.js +10 -1
  64. package/dist/application-spec/generate-application/runtime/application-runtime.d.ts +1 -3
  65. package/dist/application-spec/generate-application/runtime/configurator-runtime/configurator-runtime.d.ts +1 -3
  66. package/dist/application-spec/generate-application/runtime/sections/build-sdk-optic.d.ts +1 -1
  67. package/dist/application-spec/generate-application/runtime/sections/build-sdk-optic.js +1 -1
  68. package/dist/application-spec/generate-application/runtime/sections/component-optic.d.ts +2 -1
  69. package/dist/application-spec/generate-application/runtime/sections/expression-runtime.js +1 -1
  70. package/dist/application-spec/generate-application/runtime/sections/transformers-runtime.d.ts +2 -4
  71. package/dist/application-spec/index.d.ts +1 -0
  72. package/dist/application-spec/index.js +1 -1
  73. package/dist/application-spec/parse-application-files/categorize/categorize-files.d.ts +6 -0
  74. package/dist/application-spec/parse-application-files/categorize/categorize-files.js +1 -1
  75. package/dist/application-spec/parse-application-files/categorize/module-analysis.d.ts +1 -1
  76. package/dist/application-spec/parse-application-files/categorize/module-analysis.js +1 -1
  77. package/dist/application-spec/parse-application-files/raw-spec/raw-assistant.d.ts +16 -3
  78. package/dist/application-spec/parse-application-files/raw-spec/raw-assistant.js +1 -1
  79. package/dist/application-spec/parse-application-files/raw-spec/raw-spec-file.js +1 -1
  80. package/dist/application-spec/parse-application-files/spec/application/admin-spec/admin-spec.js +1 -1
  81. package/dist/application-spec/parse-application-files/spec/application/configurator-spec/configurator-spec.js +1 -1
  82. package/dist/application-spec/parse-application-files/spec/components/component-entry.d.ts +1 -9
  83. package/dist/application-spec/parse-application-files/spec/components/component-entry.js +1 -1
  84. package/dist/application-spec/parse-application-files/spec/components/component-filter.d.ts +1 -54
  85. package/dist/application-spec/parse-application-files/spec/components/component-filter.js +1 -1
  86. package/dist/application-spec/parse-application-files/spec/components/index.d.ts +1 -1
  87. package/dist/application-spec/parse-application-files/spec/components/index.js +1 -1
  88. package/dist/application-spec/parse-application-files/spec/expressions/expression.d.ts +1 -28
  89. package/dist/application-spec/parse-application-files/spec/expressions/expression.js +1 -1
  90. package/dist/application-spec/parse-application-files/spec/expressions/expressions.d.ts +1 -1
  91. package/dist/application-spec/parse-application-files/spec/expressions/expressions.js +1 -1
  92. package/dist/application-spec/parse-application-files/spec/expressions/index.d.ts +0 -1
  93. package/dist/application-spec/parse-application-files/spec/expressions/index.js +1 -1
  94. package/dist/application-spec/parse-application-files/spec/expressions/memo-eval-plan.js +1 -1
  95. package/dist/application-spec/parse-application-files/spec/expressions/user-expressions.js +1 -1
  96. package/dist/application-spec/parse-application-files/spec/model/defaults.d.ts +7 -2
  97. package/dist/application-spec/parse-application-files/spec/model/defaults.js +1 -1
  98. package/dist/application-spec/parse-application-files/spec/relations/reference-field-type.d.ts +25 -0
  99. package/dist/application-spec/parse-application-files/spec/relations/reference-field-type.js +1 -0
  100. package/dist/application-spec/parse-application-files/spec/relations/relation-field-mismatch.d.ts +46 -0
  101. package/dist/application-spec/parse-application-files/spec/relations/relation-field-mismatch.js +1 -0
  102. package/dist/application-spec/parse-application-files/spec/relations/relations.d.ts +4 -3
  103. package/dist/application-spec/parse-application-files/spec/relations/relations.js +1 -1
  104. package/dist/application-spec/parse-application-files/spec/sections/assistant/assistant-schema.js +1 -1
  105. package/dist/application-spec/parse-application-files/spec/sections/infra.d.ts +2 -0
  106. package/dist/application-spec/parse-application-files/spec/sections/infra.js +1 -1
  107. package/dist/client/phoenix-api.d.ts +96 -0
  108. package/dist/configurator/application-runtime/extensions/create-configurator-extensions.js +1 -1
  109. package/dist/configurator/application-runtime/extensions/selectors.d.ts +3 -1
  110. package/dist/configurator/application-runtime/extensions/selectors.js +1 -1
  111. package/dist/configurator/application-runtime/extensions/systems/assistant-system/assistant-system.d.ts +3 -1
  112. package/dist/configurator/application-runtime/extensions/systems/assistant-system/assistant-system.js +1 -1
  113. package/dist/configurator/application-runtime/extensions/systems/drag-and-drop-system/drag-and-drop-system.d.ts +3 -3
  114. package/dist/configurator/application-runtime/extensions/systems/graphql-system/graphql-system.d.ts +14 -4
  115. package/dist/configurator/application-runtime/extensions/systems/graphql-system/graphql-system.js +1 -1
  116. package/dist/configurator/application-runtime/extensions/systems/graphql-system/inject-assistant-lenses.d.ts +11 -0
  117. package/dist/configurator/application-runtime/extensions/systems/graphql-system/inject-assistant-lenses.js +1 -0
  118. package/dist/configurator/application-runtime/extensions/systems/layout-system/layout-system.d.ts +2 -2
  119. package/dist/configurator/application-runtime/extensions/systems/layout-system/layout-system.js +1 -1
  120. package/dist/configurator/common/configurator-interface.d.ts +17 -1
  121. package/dist/configurator/common/configurator-interface.js +1 -1
  122. package/dist/configurator/common/frontend-analytics.d.ts +2 -0
  123. package/dist/configurator/common/frontend-analytics.js +1 -1
  124. package/dist/configurator/common/index.d.ts +1 -0
  125. package/dist/configurator/common/index.js +1 -1
  126. package/dist/configurator/common/use-finalize-action.d.ts +27 -0
  127. package/dist/configurator/common/use-finalize-action.js +1 -0
  128. package/dist/configurator/configurator-context/configurator-hooks/layout-hooks.d.ts +1 -1
  129. package/dist/configurator/pages/DefaultConfiguratorLayout.d.ts +2 -2
  130. package/dist/configurator/pages/LoadedConfiguratorDetailPage.js +1 -1
  131. package/dist/configurator/pages/configurator-layout-name.d.ts +2 -0
  132. package/dist/configurator/pages/configurator-layout-name.js +1 -0
  133. package/dist/configurator/pages/default-configurator-elements.d.ts +7 -0
  134. package/dist/configurator/pages/default-configurator-elements.js +1 -0
  135. package/dist/configurator/pages/index.d.ts +1 -0
  136. package/dist/configurator/pages/index.js +1 -1
  137. package/dist/configurator/scene/scene-controls/hotspot-drag-handle/HotspotDragHandle.d.ts +1 -1
  138. package/dist/configurator/scene/scene-controls/hotspot-drag-handle/HotspotDragSceneHandle.d.ts +1 -1
  139. package/dist/configurator/scene/scene-entity/dimension-indicators/DimensionIndicator.d.ts +1 -1
  140. package/dist/configurator/scene/scene-entity/dimension-indicators/DimensionIndicatorInternal.d.ts +1 -1
  141. package/dist/configurator/scene/scene-entity/drag-and-drop/shared.d.ts +2 -2
  142. package/dist/configurator/scene/scene-entity/drag-and-drop/use-drag-object.d.ts +1 -1
  143. package/dist/configurator/scene/scene-entity/materials/RemoteReplacedMaterial.js +1 -1
  144. package/dist/configurator/scene/scene-entity/objects/SceneEntityObjectTextDecal.d.ts +1 -1
  145. package/dist/configurator/ui/assistant/AssistantMarkdown.d.ts +1 -1
  146. package/dist/configurator/ui/assistant/AssistantMarkdown.js +1 -1
  147. package/dist/configurator/ui/assistant/AssistantThread.js +1 -1
  148. package/dist/configurator/ui/assistant/entity-link/AssistantEntityLink.d.ts +13 -0
  149. package/dist/configurator/ui/assistant/entity-link/AssistantEntityLink.js +1 -0
  150. package/dist/configurator/ui/assistant/entity-link/entity-link-selection.d.ts +22 -0
  151. package/dist/configurator/ui/assistant/entity-link/entity-link-selection.js +1 -0
  152. package/dist/configurator/ui/assistant/entity-link/entity-link-state.d.ts +27 -0
  153. package/dist/configurator/ui/assistant/entity-link/entity-link-state.js +1 -0
  154. package/dist/configurator/ui/assistant/entity-link/entity-link-target.d.ts +5 -0
  155. package/dist/configurator/ui/assistant/entity-link/entity-link-target.js +1 -0
  156. package/dist/configurator/ui/assistant/entity-link/index.d.ts +3 -0
  157. package/dist/configurator/ui/assistant/entity-link/index.js +1 -0
  158. package/dist/configurator/ui/configurator-layout/sidebar-keys/index.d.ts +1 -0
  159. package/dist/configurator/ui/configurator-layout/sidebar-keys/index.js +1 -0
  160. package/dist/configurator/ui/configurator-layout/sidebar-keys/sidebar-keys.d.ts +11 -0
  161. package/dist/configurator/ui/configurator-layout/sidebar-keys/sidebar-keys.js +1 -0
  162. package/dist/configurator/ui/configurator-layout/slots/desktop-sidebar/DesktopSidebar.d.ts +101 -0
  163. package/dist/configurator/ui/configurator-layout/slots/desktop-sidebar/DesktopSidebar.js +16 -0
  164. package/dist/configurator/ui/configurator-layout/slots/desktop-sidebar/index.d.ts +1 -0
  165. package/dist/configurator/ui/configurator-layout/slots/desktop-sidebar/index.js +1 -0
  166. package/dist/configurator/ui/configurator-layout/slots/services/InvariantViolations.d.ts +4 -4
  167. package/dist/configurator/ui/configurator-layout/slots/services/InvariantViolations.js +1 -1
  168. package/dist/configurator/ui/configurator-layout/slots/services/SideEffects.d.ts +3 -6
  169. package/dist/configurator/ui/configurator-layout/slots/services/SideEffects.js +1 -1
  170. package/dist/configurator/ui/configurator-layout/slots/slots.d.ts +1 -0
  171. package/dist/configurator/ui/configurator-layout/slots/slots.js +1 -1
  172. package/dist/configurator/ui/configurator-layout/universal/DesktopLayout.d.ts +0 -74
  173. package/dist/configurator/ui/configurator-layout/universal/DesktopLayout.js +5 -20
  174. package/dist/configurator/ui/configurator-layout/universal/DesktopPreview.js +1 -1
  175. package/dist/configurator/ui/configurator-layout/universal/MobileLayout.js +4 -4
  176. package/dist/configurator/ui/configurator-layout/universal/MobilePreview.js +1 -1
  177. package/dist/configurator/ui/configurator-layout/universal/use-layout-scene-safe-area.d.ts +47 -0
  178. package/dist/configurator/ui/configurator-layout/universal/use-layout-scene-safe-area.js +1 -0
  179. package/dist/configurator/ui/configurator-layout/universal/use-scene-safe-area.d.ts +11 -26
  180. package/dist/configurator/ui/configurator-layout/universal/use-scene-safe-area.js +1 -1
  181. package/dist/configurator/ui/legacy/layout/steps/StepsNavigation.d.ts +2 -2
  182. package/dist/configurator/ui/phoenix-layout-elements/header/common/step-navigation/StepsNavigation.d.ts +2 -2
  183. package/dist/docs/complex-use-cases/filtered-controls-with-fix-dialog.mdx +16 -19
  184. package/dist/docs/complex-use-cases/sketching.mdx +0 -38
  185. package/dist/docs/controls/select-attribute/cardselect.mdx +9 -13
  186. package/dist/docs/dimensions/3d-scene-integration/dimension-indicators.mdx +2 -2
  187. package/dist/docs/dimensions/3d-scene-integration/editable-angle-indicator.mdx +1 -1
  188. package/dist/docs/dimensions/3d-scene-integration/editable-distance-dimension-indicator.mdx +1 -1
  189. package/dist/docs/dimensions/3d-scene-integration/list-selector-dimension-indicator.mdx +1 -1
  190. package/dist/docs/drag-and-drop/drag-handle.mdx +1 -1
  191. package/dist/docs/drag-and-drop/hotspot-handle.mdx +1 -1
  192. package/dist/docs/drag-and-drop/planes.mdx +1 -1
  193. package/dist/docs/drag-and-drop/rotatable.mdx +2 -2
  194. package/dist/docs/index.json +42 -1
  195. package/dist/docs/integrations/woocommerce/local-development.mdx +1 -1
  196. package/dist/docs/layouts/custom-layout.mdx +1400 -0
  197. package/dist/docs/layouts/header/fixed.mdx +2 -2
  198. package/dist/docs/layouts/header/floating.mdx +2 -2
  199. package/dist/docs/layouts/sidebar/in-a-custom-layout.mdx +380 -0
  200. package/dist/docs/layouts/sidebar-footer/basic.mdx +32 -77
  201. package/dist/docs/other-features/client-side-rendering/declarative.mdx +1 -1
  202. package/dist/docs/other-features/side-effects.mdx +8 -11
  203. package/dist/docs/other-features/transformers.mdx +4 -0
  204. package/dist/docs/other-features/violation-messages.mdx +52 -56
  205. package/dist/docs/phoenix/application-states.mdx +9 -7
  206. package/dist/docs/phoenix/configurator-interface.mdx +204 -82
  207. package/dist/docs/phoenix/domain-model.mdx +4 -0
  208. package/dist/docs/phoenix/finalization.mdx +1 -1
  209. package/dist/docs/phoenix/layout-slots.mdx +114 -0
  210. package/dist/docs/phoenix/phoenix-cli.mdx +27 -28
  211. package/dist/docs/phoenix/project-structure.mdx +18 -10
  212. package/dist/docs/phoenix/quickstart.mdx +2 -2
  213. package/dist/docs/phoenix/sdk-builder-workflow.mdx +2 -2
  214. package/dist/docs/phoenix/testing.mdx +140 -0
  215. package/dist/docs/phoenix/webhook-membership.mdx +10 -9
  216. package/dist/docs/phoenix/webhooks.mdx +19 -2
  217. package/dist/domain/admin-domain/implementation/common-admin-expressions.d.ts +26 -11
  218. package/dist/domain/admin-domain/implementation/common-admin-publish.d.ts +1 -2
  219. package/dist/domain/admin-domain/index.js +1 -1
  220. package/dist/domain/application/GetApplicationWrapperHandler.d.ts +1 -1
  221. package/dist/domain/application/application-config.d.ts +7 -3
  222. package/dist/domain/application/assistant/assistant-fields.d.ts +12 -0
  223. package/dist/domain/application/assistant/assistant-fields.js +1 -0
  224. package/dist/domain/application/assistant/assistant-manifest.d.ts +9 -1
  225. package/dist/domain/application/assistant/assistant-resolved-manifest.d.ts +38 -2
  226. package/dist/domain/application/assistant/assistant-resolved-manifest.js +1 -1
  227. package/dist/domain/application/assistant/build-assistant-lenses.d.ts +14 -0
  228. package/dist/domain/application/assistant/build-assistant-lenses.js +5 -0
  229. package/dist/domain/application/assistant/build-assistant-manifest.js +1 -1
  230. package/dist/domain/application/assistant/create-assistant-execution-schema.d.ts +32 -0
  231. package/dist/domain/application/assistant/create-assistant-execution-schema.js +1 -0
  232. package/dist/domain/application/assistant/generate-assistant-prompt.js +1 -1
  233. package/dist/domain/application/assistant/index.d.ts +6 -1
  234. package/dist/domain/application/assistant/index.js +1 -1
  235. package/dist/domain/application/assistant/session-setup/AssistantSetupHandler.d.ts +20 -0
  236. package/dist/domain/application/assistant/session-setup/AssistantSetupHandler.js +1 -0
  237. package/dist/domain/application/assistant/session-setup/apply-assistant-setup.d.ts +10 -0
  238. package/dist/domain/application/assistant/session-setup/apply-assistant-setup.js +1 -0
  239. package/dist/domain/application/assistant/session-setup/assistant-setup-manifest.d.ts +48 -0
  240. package/dist/domain/application/assistant/session-setup/assistant-setup-manifest.js +1 -0
  241. package/dist/domain/application/assistant/session-setup/create-session-assistant.d.ts +15 -0
  242. package/dist/domain/application/assistant/session-setup/create-session-assistant.js +1 -0
  243. package/dist/domain/application/assistant/session-setup/index.d.ts +4 -0
  244. package/dist/domain/application/assistant/session-setup/index.js +1 -0
  245. package/dist/domain/application/configurator-builder.d.ts +5 -2
  246. package/dist/domain/application/configurator-builder.js +1 -1
  247. package/dist/domain/application/create-initial-published-data.d.ts +5 -5
  248. package/dist/domain/application/index.d.ts +0 -1
  249. package/dist/domain/application/index.js +1 -1
  250. package/dist/domain/application/published-data/map-published-chunked-data.d.ts +1 -1
  251. package/dist/domain/application/published-data/map-published-data.d.ts +7 -3
  252. package/dist/domain/core/component/domain-component-optic.d.ts +1 -2
  253. package/dist/domain/core/component/domain-component-optic.js +2 -2
  254. package/dist/domain/core/component/system-component-filter.d.ts +15 -2
  255. package/dist/domain/core/expression/constant-expressions.d.ts +16 -8
  256. package/dist/domain/core/expression/custom-expression.d.ts +16 -3
  257. package/dist/domain/core/invariant/custom-invariants.d.ts +6 -14
  258. package/dist/domain/core/invariant/invariants.d.ts +1 -4
  259. package/dist/domain/core/invariant/violation.d.ts +50 -2
  260. package/dist/domain/core/invariant/violation.js +1 -1
  261. package/dist/domain/core/model/model.d.ts +1 -1
  262. package/dist/domain/core/recipe/recipes.d.ts +18 -50
  263. package/dist/domain/core/recipe/recipes.js +1 -1
  264. package/dist/domain/core/relation/all-of-type-relation.d.ts +8 -21
  265. package/dist/domain/core/relation/all-of-type-relation.js +1 -1
  266. package/dist/domain/core/relation/direct-relation.d.ts +13 -24
  267. package/dist/domain/core/relation/index.d.ts +0 -1
  268. package/dist/domain/core/relation/indirect-relation.d.ts +12 -67
  269. package/dist/domain/core/relation/indirect-relation.js +1 -1
  270. package/dist/domain/core/relation/relation-factory.d.ts +19 -15
  271. package/dist/domain/core/relation/relation-factory.js +1 -1
  272. package/dist/domain/core/state/state.d.ts +1 -1
  273. package/dist/domain/domain-runtime/access/selectors.d.ts +9 -0
  274. package/dist/domain/domain-runtime/access/selectors.js +1 -1
  275. package/dist/domain/domain-runtime/access/types.d.ts +2 -0
  276. package/dist/domain/domain-runtime/access/types.js +1 -1
  277. package/dist/domain/domain-runtime/domain-context/selectors.d.ts +14 -13
  278. package/dist/domain/domain-runtime/domain-context/selectors.js +1 -1
  279. package/dist/domain/domain-runtime/domain-context/types.d.ts +4 -1
  280. package/dist/domain/domain-runtime/domain-runtime.d.ts +32 -16
  281. package/dist/domain/domain-runtime/errors/implementation-error-collector.d.ts +19 -0
  282. package/dist/domain/domain-runtime/errors/implementation-error-collector.js +1 -0
  283. package/dist/domain/domain-runtime/errors/implementation-error.d.ts +46 -0
  284. package/dist/domain/domain-runtime/errors/implementation-error.js +1 -0
  285. package/dist/domain/domain-runtime/errors/implementation-errors.d.ts +13 -0
  286. package/dist/domain/domain-runtime/errors/implementation-errors.js +1 -0
  287. package/dist/domain/domain-runtime/errors/index.d.ts +4 -0
  288. package/dist/domain/domain-runtime/errors/index.js +1 -0
  289. package/dist/domain/domain-runtime/errors/to-implementation-errors.d.ts +10 -0
  290. package/dist/domain/domain-runtime/errors/to-implementation-errors.js +1 -0
  291. package/dist/domain/domain-runtime/index.d.ts +1 -0
  292. package/dist/domain/domain-runtime/index.js +1 -1
  293. package/dist/domain/domain-runtime/spec/create-violation-expressions.d.ts +24 -0
  294. package/dist/domain/domain-runtime/spec/create-violation-expressions.js +1 -0
  295. package/dist/domain/domain-runtime/spec/index.d.ts +1 -1
  296. package/dist/domain/domain-runtime/spec/index.js +1 -1
  297. package/dist/domain/domain-runtime/spec/initialize.d.ts +11 -0
  298. package/dist/domain/domain-runtime/spec/initialize.js +1 -1
  299. package/dist/domain/domain-runtime/spec/module-checks/index.d.ts +1 -1
  300. package/dist/domain/domain-runtime/spec/module-checks/project-modules.d.ts +8 -1
  301. package/dist/domain/domain-runtime/spec/module-checks/project-modules.js +1 -1
  302. package/dist/domain/domain-runtime/spec/module-checks/resolve-action-modules.js +1 -1
  303. package/dist/domain/domain-runtime/spec/module-checks/resolve-expression-modules.js +1 -1
  304. package/dist/domain/domain-runtime/spec/module-checks/resolve-imported-transformers.d.ts +7 -7
  305. package/dist/domain/domain-runtime/spec/module-checks/resolve-imported-transformers.js +1 -1
  306. package/dist/domain/domain-runtime/spec/module-checks/resolve-invariant-modules.d.ts +2 -2
  307. package/dist/domain/domain-runtime/spec/module-checks/resolve-invariant-modules.js +1 -1
  308. package/dist/domain/domain-runtime/spec/selectors.js +1 -1
  309. package/dist/domain/domain-runtime/spec/types.d.ts +2 -0
  310. package/dist/domain/extensions/attribute-switch.d.ts +1 -1
  311. package/dist/domain/extensions/attribute-switch.js +1 -1
  312. package/dist/domain/extensions/canvas-config.d.ts +1 -1
  313. package/dist/domain/extensions/client-side-image.d.ts +2 -2
  314. package/dist/domain/extensions/client-side-image.js +1 -1
  315. package/dist/domain/extensions/common/angle-indicator-schema.d.ts +2 -2
  316. package/dist/domain/extensions/common/dimension-indicator-schema.d.ts +2 -2
  317. package/dist/domain/extensions/editable-angle-indicator.d.ts +1 -1
  318. package/dist/domain/extensions/editable-distance-dimension-indicator.d.ts +1 -1
  319. package/dist/domain/extensions/editable-offset-indicator.d.ts +1 -1
  320. package/dist/domain/extensions/editable-offset-indicator.js +1 -1
  321. package/dist/domain/extensions/fit-selection-orthographic-camera-component.js +1 -1
  322. package/dist/domain/extensions/fit-selection-perspective-camera-component.js +1 -1
  323. package/dist/domain/extensions/horizontal-tabs.d.ts +2 -2
  324. package/dist/domain/extensions/list-selector-dimension-indicator.d.ts +1 -1
  325. package/dist/domain/extensions/navigation-steps.d.ts +2 -2
  326. package/dist/domain/extensions/offset-indicator.js +1 -1
  327. package/dist/domain/extensions/rotation-handle.d.ts +2 -2
  328. package/dist/domain/extensions/save-template-thumbnail.d.ts +2 -2
  329. package/dist/domain/extensions/save-template-thumbnail.js +1 -1
  330. package/dist/domain/extensions/scene-entity-animation.js +1 -1
  331. package/dist/domain/mocks/create-mock-domain-context.d.ts +1 -1
  332. package/dist/domain/mocks/create-mock-domain-runtime.d.ts +18 -9
  333. package/dist/domain/mocks/create-mock-domain-runtime.js +1 -1
  334. package/dist/domain/mocks/create-mock-domain.d.ts +1 -1
  335. package/dist/domain/mocks/create-mock-domain.js +1 -1
  336. package/dist/domain/mocks/create-mock-state.d.ts +2 -2
  337. package/dist/domain/mocks/create-test-application-config.d.ts +59 -0
  338. package/dist/domain/mocks/create-test-application-config.js +1 -0
  339. package/dist/domain/mocks/index.d.ts +1 -0
  340. package/dist/domain/mocks/index.js +1 -1
  341. package/dist/domain/projections/blender-projections/camera.d.ts +1 -1
  342. package/dist/domain/system-components/application-config.d.ts +2 -2
  343. package/dist/domain/system-components/child-entity-selection.js +1 -1
  344. package/dist/domain/system-components/collision-box-geometry.d.ts +4 -2
  345. package/dist/domain/system-components/collision-geometry.d.ts +4 -2
  346. package/dist/domain/system-components/collision-point-geometry.d.ts +4 -2
  347. package/dist/domain/system-components/common/material-override-schema.d.ts +2 -2
  348. package/dist/domain/system-components/common/recipes.d.ts +21 -3
  349. package/dist/domain/system-components/common/recipes.js +1 -1
  350. package/dist/domain/system-components/constraint.d.ts +10 -23
  351. package/dist/domain/system-components/drag-handle.d.ts +1 -1
  352. package/dist/domain/system-components/drag-handle.js +1 -1
  353. package/dist/domain/system-components/fit-entity-orthographic-camera-component.js +1 -1
  354. package/dist/domain/system-components/fit-entity-perspective-camera-component.js +1 -1
  355. package/dist/domain/system-components/fit-root-orthographic-camera-component.js +1 -1
  356. package/dist/domain/system-components/fit-root-perspective-camera-component.js +1 -1
  357. package/dist/domain/system-components/hotspot-drag-handle.d.ts +1 -1
  358. package/dist/domain/system-components/hotspot-drag-handle.js +1 -1
  359. package/dist/domain/system-components/material-swatch.js +1 -1
  360. package/dist/domain/system-components/scene-entity-material-override.d.ts +1 -1
  361. package/dist/domain/system-components/scene-entity-object-material-override.d.ts +1 -1
  362. package/dist/domain/system-components/scene-entity-object-text-decal.d.ts +1 -1
  363. package/dist/domain/system-components/scene-entity-object-transimissive-material-override.d.ts +1 -1
  364. package/dist/domain/system-components/scene-entity-transimissive-material-override.d.ts +1 -1
  365. package/dist/domain/system-components/static-orthographic-camera-component.js +1 -1
  366. package/dist/domain/system-components/static-perspective-camera-component.js +1 -1
  367. package/dist/domain/utils/eval-cache.d.ts +1 -1
  368. package/dist/domain/utils/map-nested-object.d.ts +1 -1
  369. package/dist/editor/domain-editors/use-implementation-files.d.ts +1 -2
  370. package/dist/editor/mocks/EditorMockContext.js +1 -1
  371. package/dist/legacy/domain-cli/gen/configurator-builder.js +13 -12
  372. package/dist/legacy/domain-cli/gen/constant-expressions.js +1 -1
  373. package/dist/legacy/domain-cli/gen/defaults.js +1 -7
  374. package/dist/legacy/domain-cli/gen/invariants.js +3 -4
  375. package/dist/legacy/domain-cli/gen/relations.js +1 -1
  376. package/dist/legacy/domain-cli/utils/cache.d.ts +1 -1
  377. package/dist/legacy/domain-cli/utils/cache.js +1 -1
  378. package/dist/legacy/domain-spec/__generated/domain-schema.d.ts +81 -68
  379. package/dist/legacy/phoenix-cli/project-gen/generators/file-templates/agents/claude-md.d.ts +1 -1
  380. package/dist/legacy/phoenix-cli/project-gen/generators/file-templates/agents/cursor-rules.d.ts +1 -1
  381. package/dist/legacy/phoenix-cli/project-gen/generators/file-templates/agents/shared-sdk-content.d.ts +1 -1
  382. package/dist/legacy/phoenix-cli/project-gen/generators/file-templates/agents/shared-sdk-content.js +7 -1
  383. package/dist/legacy/phoenix-cli/project-gen/generators/file-templates/domain-index.js +15 -13
  384. package/dist/legacy/phoenix-cli/project-gen/generators/file-templates/frontend-admin.js +18 -16
  385. package/dist/legacy/phoenix-cli/project-gen/generators/file-templates/frontend-configurator.js +14 -12
  386. package/dist/legacy/phoenix-cli/project-gen/generators/file-templates/frontend-embedded-admin.js +13 -11
  387. package/dist/legacy/phoenix-cli/project-gen/generators/file-templates/frontend-embedded-configurator.js +13 -11
  388. package/dist/phoenix/application-spec/application-spec-builder.js +1 -1
  389. package/dist/phoenix/commands/check.js +1 -1
  390. package/dist/phoenix/commands/deploy.js +1 -1
  391. package/dist/phoenix/commands/fix.js +1 -1
  392. package/dist/phoenix/commands/init.d.ts +4 -4
  393. package/dist/phoenix/commands/init.js +1 -1
  394. package/dist/phoenix/services/application-spec-project-watcher.js +3 -3
  395. package/dist/phoenix/services/source-archive.d.ts +1 -0
  396. package/dist/phoenix/services/source-archive.js +1 -1
  397. package/dist/phoenix/utils/git/index.d.ts +1 -0
  398. package/dist/phoenix/utils/git/index.js +1 -0
  399. package/dist/phoenix/utils/git/is-inside-git-repository.d.ts +6 -0
  400. package/dist/phoenix/utils/git/is-inside-git-repository.js +1 -0
  401. package/dist/phoenix/utils/index.d.ts +1 -0
  402. package/dist/phoenix/utils/index.js +1 -1
  403. package/dist/react-sdk/application-runtime/hooks/use-access-service.d.ts +2 -0
  404. package/dist/react-sdk/application-runtime/mocks/create-mock-application-runtime.js +1 -1
  405. package/dist/react-sdk/application-runtime/routing/access-service.d.ts +1 -0
  406. package/dist/react-sdk/application-runtime/runtime/create-application-runtime.d.ts +33 -16
  407. package/dist/react-sdk/application-runtime/runtime/create-application-runtime.js +1 -1
  408. package/dist/react-sdk/domain-context/common-hooks/use-configurator-messages.d.ts +30 -0
  409. package/dist/react-sdk/domain-context/common-hooks/use-configurator-messages.js +1 -0
  410. package/dist/react-sdk/domain-context/common-hooks/use-domain-context.d.ts +4 -4
  411. package/dist/react-sdk/domain-context/index.d.ts +2 -1
  412. package/dist/react-sdk/domain-context/index.js +1 -1
  413. package/dist/react-sdk/domain-context/system-hooks/navigation-hooks.d.ts +6 -0
  414. package/dist/react-sdk/domain-context/system-hooks/navigation-hooks.js +1 -1
  415. package/dist/react-sdk/domain-controls/hooks/use-angle-dimension.d.ts +1 -1
  416. package/dist/ui-sdk/theme/types.d.ts +1 -1
  417. package/dist/webhook/builders/webhook-builder.js +1 -1
  418. package/package.json +3 -3
  419. package/schema/domain-spec.json +1115 -209
  420. package/dist/application-spec/generate-application/code/templates/prettier-ignore.d.ts +0 -1
  421. package/dist/application-spec/generate-application/code/templates/prettier-ignore.js +0 -6
  422. package/dist/application-spec/generate-application/code/templates/webhook-implementation.d.ts +0 -1
  423. package/dist/application-spec/generate-application/code/templates/webhook-implementation.js +0 -7
  424. package/dist/domain/application/resource-builder.d.ts +0 -13
  425. package/dist/domain/application/resource-builder.js +0 -1
  426. package/dist/domain/core/relation/relation-implementation.d.ts +0 -7
  427. package/dist/domain/domain-runtime/spec/invariant-builder.d.ts +0 -26
  428. package/dist/domain/domain-runtime/spec/invariant-builder.js +0 -1
  429. /package/dist/{domain/core/relation/relation-implementation.js → application-spec/core/expressions/relation-expression-params.js} +0 -0
  430. /package/dist/application-spec/{core → enhanced-json}/eval-code-uses-self.d.ts +0 -0
  431. /package/dist/application-spec/{core → enhanced-json}/eval-code-uses-self.js +0 -0
  432. /package/dist/application-spec/{core → enhanced-json}/eval-to-constant.js +0 -0
@@ -272,24 +272,28 @@ export declare function createDomainRuntimeSlices<State extends DomainRuntimeSta
272
272
  access: {
273
273
  selectConfiguratorRawAccessInfo: import("@salsita-ai/common/utils").Selector<import("./index.js").AccessSelectorState, {
274
274
  raw: string;
275
+ access: import("@salsita-ai/contracts/api").AccessLevel;
275
276
  viewMode: boolean;
276
277
  revisionId: string | undefined;
277
278
  configurationId: string;
278
279
  } | null>;
279
280
  selectAdminRawAccessInfo: import("@salsita-ai/common/utils").Selector<import("./index.js").AccessSelectorState, {
280
281
  raw: string;
282
+ access: import("@salsita-ai/contracts/api").AccessLevel;
281
283
  viewMode: boolean;
282
284
  revisionId: string | undefined;
283
285
  configurationId: string;
284
286
  } | null>;
285
287
  selectConfiguratorAccessInfo: import("@salsita-ai/common/utils").Selector<import("./index.js").AccessSelectorState, {
286
288
  raw: string;
289
+ access: import("@salsita-ai/contracts/api").AccessLevel;
287
290
  viewMode: boolean;
288
291
  revisionId: string | undefined;
289
292
  configurationId: string;
290
293
  }>;
291
294
  selectAdminAccessInfo: import("@salsita-ai/common/utils").Selector<import("./index.js").AccessSelectorState, {
292
295
  raw: string;
296
+ access: import("@salsita-ai/contracts/api").AccessLevel;
293
297
  viewMode: boolean;
294
298
  revisionId: string | undefined;
295
299
  configurationId: string;
@@ -302,24 +306,28 @@ export declare function createDomainRuntimeSlices<State extends DomainRuntimeSta
302
306
  selectAdminConfigurationId: import("@salsita-ai/common/utils").Selector<import("./index.js").AccessSelectorState, string>;
303
307
  getConfiguratorRawAccessInfo: () => {
304
308
  raw: string;
309
+ access: import("@salsita-ai/contracts/api").AccessLevel;
305
310
  viewMode: boolean;
306
311
  revisionId: string | undefined;
307
312
  configurationId: string;
308
313
  } | null;
309
314
  getAdminRawAccessInfo: () => {
310
315
  raw: string;
316
+ access: import("@salsita-ai/contracts/api").AccessLevel;
311
317
  viewMode: boolean;
312
318
  revisionId: string | undefined;
313
319
  configurationId: string;
314
320
  } | null;
315
321
  getConfiguratorAccessInfo: () => {
316
322
  raw: string;
323
+ access: import("@salsita-ai/contracts/api").AccessLevel;
317
324
  viewMode: boolean;
318
325
  revisionId: string | undefined;
319
326
  configurationId: string;
320
327
  };
321
328
  getAdminAccessInfo: () => {
322
329
  raw: string;
330
+ access: import("@salsita-ai/contracts/api").AccessLevel;
323
331
  viewMode: boolean;
324
332
  revisionId: string | undefined;
325
333
  configurationId: string;
@@ -365,9 +373,9 @@ export declare function createDomainRuntimeSlices<State extends DomainRuntimeSta
365
373
  selectIsViewMode: import("@salsita-ai/common/utils").Selector<import("./index.js").DomainContextSelectorState, boolean>;
366
374
  selectInitializationState: import("@salsita-ai/common/utils").Selector<import("./index.js").DomainContextSelectorState, import("./index.js").DomainContextInitializationState>;
367
375
  selectComponentOptics: import("@salsita-ai/common/utils").Selector<import("./index.js").DomainContextSelectorState, readonly import("../index.js").AnyDomainComponentOptic[]>;
368
- selectComponentReaderIndexes: import("@salsita-ai/common/utils").Selector<import("./index.js").DomainContextSelectorState, import("./index.js").ComponentReaderIndexes<any, any, any, any, any>>;
376
+ selectComponentReaderIndexes: import("@salsita-ai/common/utils").Selector<import("./index.js").DomainContextSelectorState, import("./index.js").ComponentReaderIndexes>;
369
377
  selectStoreRuntimeDependencies: import("@salsita-ai/common/utils").Selector<import("./index.js").DomainContextSelectorState, {
370
- componentReaderIndexes: import("./index.js").ComponentReaderIndexes<any, any, any, any, any>;
378
+ componentReaderIndexes: import("./index.js").ComponentReaderIndexes;
371
379
  domainExpressions: import("../index.js").AnyExpressions;
372
380
  allowedRootEntityTypes: import("../index.js").AnyAllowedRootEntityTypes;
373
381
  }>;
@@ -407,9 +415,9 @@ export declare function createDomainRuntimeSlices<State extends DomainRuntimeSta
407
415
  getMigrate: () => import("../index.js").MigrateFunction<import("../index.js").DomainEntity<string>>;
408
416
  getActiveMode: () => import("../index.js").DomainMode;
409
417
  getIsInitialized: () => boolean;
410
- getComponentReaderIndexes: () => import("./index.js").ComponentReaderIndexes<any, any, any, any, any>;
418
+ getComponentReaderIndexes: () => import("./index.js").ComponentReaderIndexes;
411
419
  getStoreRuntimeDependencies: () => {
412
- componentReaderIndexes: import("./index.js").ComponentReaderIndexes<any, any, any, any, any>;
420
+ componentReaderIndexes: import("./index.js").ComponentReaderIndexes;
413
421
  domainExpressions: import("../index.js").AnyExpressions;
414
422
  allowedRootEntityTypes: import("../index.js").AnyAllowedRootEntityTypes;
415
423
  };
@@ -474,9 +482,9 @@ export declare function createDomainRuntimeSlices<State extends DomainRuntimeSta
474
482
  selectIsViewMode: import("@salsita-ai/common/utils").Selector<import("./index.js").DomainContextSelectorState, boolean>;
475
483
  selectInitializationState: import("@salsita-ai/common/utils").Selector<import("./index.js").DomainContextSelectorState, import("./index.js").DomainContextInitializationState>;
476
484
  selectComponentOptics: import("@salsita-ai/common/utils").Selector<import("./index.js").DomainContextSelectorState, readonly import("../index.js").AnyDomainComponentOptic[]>;
477
- selectComponentReaderIndexes: import("@salsita-ai/common/utils").Selector<import("./index.js").DomainContextSelectorState, import("./index.js").ComponentReaderIndexes<any, any, any, any, any>>;
485
+ selectComponentReaderIndexes: import("@salsita-ai/common/utils").Selector<import("./index.js").DomainContextSelectorState, import("./index.js").ComponentReaderIndexes>;
478
486
  selectStoreRuntimeDependencies: import("@salsita-ai/common/utils").Selector<import("./index.js").DomainContextSelectorState, {
479
- componentReaderIndexes: import("./index.js").ComponentReaderIndexes<any, any, any, any, any>;
487
+ componentReaderIndexes: import("./index.js").ComponentReaderIndexes;
480
488
  domainExpressions: import("../index.js").AnyExpressions;
481
489
  allowedRootEntityTypes: import("../index.js").AnyAllowedRootEntityTypes;
482
490
  }>;
@@ -516,9 +524,9 @@ export declare function createDomainRuntimeSlices<State extends DomainRuntimeSta
516
524
  getMigrate: () => import("../index.js").MigrateFunction<import("../index.js").DomainEntity<string>>;
517
525
  getActiveMode: () => import("../index.js").DomainMode;
518
526
  getIsInitialized: () => boolean;
519
- getComponentReaderIndexes: () => import("./index.js").ComponentReaderIndexes<any, any, any, any, any>;
527
+ getComponentReaderIndexes: () => import("./index.js").ComponentReaderIndexes;
520
528
  getStoreRuntimeDependencies: () => {
521
- componentReaderIndexes: import("./index.js").ComponentReaderIndexes<any, any, any, any, any>;
529
+ componentReaderIndexes: import("./index.js").ComponentReaderIndexes;
522
530
  domainExpressions: import("../index.js").AnyExpressions;
523
531
  allowedRootEntityTypes: import("../index.js").AnyAllowedRootEntityTypes;
524
532
  };
@@ -862,24 +870,28 @@ export declare const createDomainRuntime: (props: Omit<Props<DomainRuntimeState>
862
870
  access: {
863
871
  selectConfiguratorRawAccessInfo: import("@salsita-ai/common/utils").Selector<import("./index.js").AccessSelectorState, {
864
872
  raw: string;
873
+ access: import("@salsita-ai/contracts/api").AccessLevel;
865
874
  viewMode: boolean;
866
875
  revisionId: string | undefined;
867
876
  configurationId: string;
868
877
  } | null>;
869
878
  selectAdminRawAccessInfo: import("@salsita-ai/common/utils").Selector<import("./index.js").AccessSelectorState, {
870
879
  raw: string;
880
+ access: import("@salsita-ai/contracts/api").AccessLevel;
871
881
  viewMode: boolean;
872
882
  revisionId: string | undefined;
873
883
  configurationId: string;
874
884
  } | null>;
875
885
  selectConfiguratorAccessInfo: import("@salsita-ai/common/utils").Selector<import("./index.js").AccessSelectorState, {
876
886
  raw: string;
887
+ access: import("@salsita-ai/contracts/api").AccessLevel;
877
888
  viewMode: boolean;
878
889
  revisionId: string | undefined;
879
890
  configurationId: string;
880
891
  }>;
881
892
  selectAdminAccessInfo: import("@salsita-ai/common/utils").Selector<import("./index.js").AccessSelectorState, {
882
893
  raw: string;
894
+ access: import("@salsita-ai/contracts/api").AccessLevel;
883
895
  viewMode: boolean;
884
896
  revisionId: string | undefined;
885
897
  configurationId: string;
@@ -892,24 +904,28 @@ export declare const createDomainRuntime: (props: Omit<Props<DomainRuntimeState>
892
904
  selectAdminConfigurationId: import("@salsita-ai/common/utils").Selector<import("./index.js").AccessSelectorState, string>;
893
905
  getConfiguratorRawAccessInfo: () => {
894
906
  raw: string;
907
+ access: import("@salsita-ai/contracts/api").AccessLevel;
895
908
  viewMode: boolean;
896
909
  revisionId: string | undefined;
897
910
  configurationId: string;
898
911
  } | null;
899
912
  getAdminRawAccessInfo: () => {
900
913
  raw: string;
914
+ access: import("@salsita-ai/contracts/api").AccessLevel;
901
915
  viewMode: boolean;
902
916
  revisionId: string | undefined;
903
917
  configurationId: string;
904
918
  } | null;
905
919
  getConfiguratorAccessInfo: () => {
906
920
  raw: string;
921
+ access: import("@salsita-ai/contracts/api").AccessLevel;
907
922
  viewMode: boolean;
908
923
  revisionId: string | undefined;
909
924
  configurationId: string;
910
925
  };
911
926
  getAdminAccessInfo: () => {
912
927
  raw: string;
928
+ access: import("@salsita-ai/contracts/api").AccessLevel;
913
929
  viewMode: boolean;
914
930
  revisionId: string | undefined;
915
931
  configurationId: string;
@@ -955,9 +971,9 @@ export declare const createDomainRuntime: (props: Omit<Props<DomainRuntimeState>
955
971
  selectIsViewMode: import("@salsita-ai/common/utils").Selector<import("./index.js").DomainContextSelectorState, boolean>;
956
972
  selectInitializationState: import("@salsita-ai/common/utils").Selector<import("./index.js").DomainContextSelectorState, import("./index.js").DomainContextInitializationState>;
957
973
  selectComponentOptics: import("@salsita-ai/common/utils").Selector<import("./index.js").DomainContextSelectorState, readonly import("../index.js").AnyDomainComponentOptic[]>;
958
- selectComponentReaderIndexes: import("@salsita-ai/common/utils").Selector<import("./index.js").DomainContextSelectorState, import("./index.js").ComponentReaderIndexes<any, any, any, any, any>>;
974
+ selectComponentReaderIndexes: import("@salsita-ai/common/utils").Selector<import("./index.js").DomainContextSelectorState, import("./index.js").ComponentReaderIndexes>;
959
975
  selectStoreRuntimeDependencies: import("@salsita-ai/common/utils").Selector<import("./index.js").DomainContextSelectorState, {
960
- componentReaderIndexes: import("./index.js").ComponentReaderIndexes<any, any, any, any, any>;
976
+ componentReaderIndexes: import("./index.js").ComponentReaderIndexes;
961
977
  domainExpressions: import("../index.js").AnyExpressions;
962
978
  allowedRootEntityTypes: import("../index.js").AnyAllowedRootEntityTypes;
963
979
  }>;
@@ -997,9 +1013,9 @@ export declare const createDomainRuntime: (props: Omit<Props<DomainRuntimeState>
997
1013
  getMigrate: () => import("../index.js").MigrateFunction<import("../index.js").DomainEntity<string>>;
998
1014
  getActiveMode: () => import("../index.js").DomainMode;
999
1015
  getIsInitialized: () => boolean;
1000
- getComponentReaderIndexes: () => import("./index.js").ComponentReaderIndexes<any, any, any, any, any>;
1016
+ getComponentReaderIndexes: () => import("./index.js").ComponentReaderIndexes;
1001
1017
  getStoreRuntimeDependencies: () => {
1002
- componentReaderIndexes: import("./index.js").ComponentReaderIndexes<any, any, any, any, any>;
1018
+ componentReaderIndexes: import("./index.js").ComponentReaderIndexes;
1003
1019
  domainExpressions: import("../index.js").AnyExpressions;
1004
1020
  allowedRootEntityTypes: import("../index.js").AnyAllowedRootEntityTypes;
1005
1021
  };
@@ -1064,9 +1080,9 @@ export declare const createDomainRuntime: (props: Omit<Props<DomainRuntimeState>
1064
1080
  selectIsViewMode: import("@salsita-ai/common/utils").Selector<import("./index.js").DomainContextSelectorState, boolean>;
1065
1081
  selectInitializationState: import("@salsita-ai/common/utils").Selector<import("./index.js").DomainContextSelectorState, import("./index.js").DomainContextInitializationState>;
1066
1082
  selectComponentOptics: import("@salsita-ai/common/utils").Selector<import("./index.js").DomainContextSelectorState, readonly import("../index.js").AnyDomainComponentOptic[]>;
1067
- selectComponentReaderIndexes: import("@salsita-ai/common/utils").Selector<import("./index.js").DomainContextSelectorState, import("./index.js").ComponentReaderIndexes<any, any, any, any, any>>;
1083
+ selectComponentReaderIndexes: import("@salsita-ai/common/utils").Selector<import("./index.js").DomainContextSelectorState, import("./index.js").ComponentReaderIndexes>;
1068
1084
  selectStoreRuntimeDependencies: import("@salsita-ai/common/utils").Selector<import("./index.js").DomainContextSelectorState, {
1069
- componentReaderIndexes: import("./index.js").ComponentReaderIndexes<any, any, any, any, any>;
1085
+ componentReaderIndexes: import("./index.js").ComponentReaderIndexes;
1070
1086
  domainExpressions: import("../index.js").AnyExpressions;
1071
1087
  allowedRootEntityTypes: import("../index.js").AnyAllowedRootEntityTypes;
1072
1088
  }>;
@@ -1106,9 +1122,9 @@ export declare const createDomainRuntime: (props: Omit<Props<DomainRuntimeState>
1106
1122
  getMigrate: () => import("../index.js").MigrateFunction<import("../index.js").DomainEntity<string>>;
1107
1123
  getActiveMode: () => import("../index.js").DomainMode;
1108
1124
  getIsInitialized: () => boolean;
1109
- getComponentReaderIndexes: () => import("./index.js").ComponentReaderIndexes<any, any, any, any, any>;
1125
+ getComponentReaderIndexes: () => import("./index.js").ComponentReaderIndexes;
1110
1126
  getStoreRuntimeDependencies: () => {
1111
- componentReaderIndexes: import("./index.js").ComponentReaderIndexes<any, any, any, any, any>;
1127
+ componentReaderIndexes: import("./index.js").ComponentReaderIndexes;
1112
1128
  domainExpressions: import("../index.js").AnyExpressions;
1113
1129
  allowedRootEntityTypes: import("../index.js").AnyAllowedRootEntityTypes;
1114
1130
  };
@@ -0,0 +1,19 @@
1
+ import { type ImplementationError } from './implementation-error.js';
2
+ /**
3
+ * Gathers the implementation errors of one application start. Checks that do not depend on each
4
+ * other run through `attempt`, so that the failure of one does not hide the failures of the others.
5
+ */
6
+ export interface ImplementationErrorCollector {
7
+ /**
8
+ * Runs one independent check. An implementation error it throws is recorded and `fallback` is
9
+ * returned, so the checks after it still run. Anything else it throws propagates.
10
+ */
11
+ readonly attempt: <T>(check: () => T, fallback: T) => T;
12
+ readonly add: (error: ImplementationError) => void;
13
+ /**
14
+ * Throws the recorded errors as one {@link ImplementationErrors}, in the order they were
15
+ * recorded. Does nothing when there are none.
16
+ */
17
+ readonly throwIfAny: () => void;
18
+ }
19
+ export declare const createImplementationErrorCollector: () => ImplementationErrorCollector;
@@ -0,0 +1 @@
1
+ import{isImplementationError as r}from"./implementation-error.js";import{ImplementationErrors as t,isImplementationErrors as e}from"./implementation-errors.js";export const createImplementationErrorCollector=()=>{let o=[],n=r=>{o.push(r)};return{add:n,attempt:(t,o)=>{try{return t()}catch(t){if(e(t))return t.errors.forEach(n),o;if(r(t))return n(t),o;throw t}},throwIfAny:()=>{if(o.length>0)throw new t(o)}}};
@@ -0,0 +1,46 @@
1
+ /**
2
+ * What kind of mistake an {@link ImplementationError} reports. A host that shows the error, such as
3
+ * a webhook log, reads the code instead of parsing the message.
4
+ *
5
+ * - `MISSING_EXPORT`: a convention file exports nothing where its folder requires an export.
6
+ * - `INVALID_EXPORT`: a convention file exports a value that does not match its folder's contract.
7
+ * - `MISSING_IMPLEMENTATION`: the spec declares something that no project file implements.
8
+ * - `DUPLICATE_DEFINITION`: two files define what only one may define.
9
+ * - `INVALID_CONFIGURATION`: the application's configuration is incomplete or contradictory.
10
+ * - `STARTUP_FAILED`: project or SDK code threw while the application was starting.
11
+ */
12
+ export type ImplementationErrorCode = 'MISSING_EXPORT' | 'INVALID_EXPORT' | 'MISSING_IMPLEMENTATION' | 'DUPLICATE_DEFINITION' | 'INVALID_CONFIGURATION' | 'STARTUP_FAILED';
13
+ /** The parts an {@link ImplementationError} is made of. Its message is built from them. */
14
+ export interface ImplementationErrorProps {
15
+ readonly code: ImplementationErrorCode;
16
+ /** Project-relative path of the file to fix, or `null` when the mistake belongs to no single file. */
17
+ readonly origin: string | null;
18
+ /** What went wrong, without the file name and without a full stop. */
19
+ readonly problem: string;
20
+ /** What the SDK requires at that place, when the mistake is a wrong value. */
21
+ readonly expected?: string;
22
+ /** What it found instead. It is part of the message only together with `expected`. */
23
+ readonly received?: string;
24
+ /** What the developer can do to fix it, as one or more full sentences. */
25
+ readonly fix: string;
26
+ /** What was thrown, when the error reports a failure of other code. */
27
+ readonly cause?: unknown;
28
+ }
29
+ /**
30
+ * A mistake in a project's implementation that stops its application from starting: a convention
31
+ * file with the wrong export, a definition made twice, a project file that throws.
32
+ *
33
+ * The checks the domain runtime runs on a project's files throw it, so that every host of the
34
+ * runtime (the web component, the editor, a webhook) can tell it from a defect of its own and report
35
+ * it in its own medium. `message` is the whole report as one text; the fields hold its parts.
36
+ */
37
+ export declare class ImplementationError extends Error {
38
+ readonly code: ImplementationErrorCode;
39
+ readonly origin: string | null;
40
+ readonly problem: string;
41
+ readonly expected: string | null;
42
+ readonly received: string | null;
43
+ readonly fix: string;
44
+ constructor(props: ImplementationErrorProps);
45
+ }
46
+ export declare const isImplementationError: (error: unknown) => error is ImplementationError;
@@ -0,0 +1 @@
1
+ export class ImplementationError extends Error{code;origin;problem;expected;received;fix;constructor(e){let i,r,o;super((i=null===e.origin?"":` in ${e.origin}`,r=void 0===e.received?"":`, but got ${e.received}`,o=void 0===e.expected?"":`: expected ${e.expected}${r}`,`${e.problem}${i}${o}. ${e.fix}`),void 0===e.cause?void 0:{cause:e.cause}),this.name="ImplementationError",this.code=e.code,this.origin=e.origin,this.problem=e.problem,this.expected=e.expected??null,this.received=e.received??null,this.fix=e.fix}}export const isImplementationError=e=>e instanceof ImplementationError;
@@ -0,0 +1,13 @@
1
+ import type { ImplementationError } from './implementation-error.js';
2
+ /**
3
+ * Every {@link ImplementationError} one start of an application found, reported together, so that a
4
+ * developer with four wrong files reads four errors instead of fixing them one reload at a time.
5
+ *
6
+ * The message of a list with one error is that error's message. The message of a longer list is a
7
+ * headline with the count, followed by one numbered line per error in the order of `errors`.
8
+ */
9
+ export declare class ImplementationErrors extends Error {
10
+ readonly errors: readonly ImplementationError[];
11
+ constructor(errors: readonly ImplementationError[]);
12
+ }
13
+ export declare const isImplementationErrors: (error: unknown) => error is ImplementationErrors;
@@ -0,0 +1 @@
1
+ export class ImplementationErrors extends Error{errors;constructor(r){super((r=>{let[e]=r;return 1===r.length&&e?e.message:[`The application cannot start: ${r.length} implementation errors were found.`,...r.map((r,e)=>`${e+1}. ${r.message}`)].join("\n")})(r)),this.name="ImplementationErrors",this.errors=r}}export const isImplementationErrors=r=>r instanceof ImplementationErrors;
@@ -0,0 +1,4 @@
1
+ export { type ImplementationErrorCode, type ImplementationErrorProps, ImplementationError, isImplementationError, } from './implementation-error.js';
2
+ export { type ImplementationErrorCollector, createImplementationErrorCollector, } from './implementation-error-collector.js';
3
+ export { ImplementationErrors, isImplementationErrors } from './implementation-errors.js';
4
+ export { type StartupStage, toImplementationErrors } from './to-implementation-errors.js';
@@ -0,0 +1 @@
1
+ export{ImplementationError,isImplementationError}from"./implementation-error.js";export{createImplementationErrorCollector}from"./implementation-error-collector.js";export{ImplementationErrors,isImplementationErrors}from"./implementation-errors.js";export{toImplementationErrors}from"./to-implementation-errors.js";
@@ -0,0 +1,10 @@
1
+ import { ImplementationErrors } from './implementation-errors.js';
2
+ /** The step of an application start during which a failure that the SDK did not raise itself was caught. */
3
+ export type StartupStage = 'import' | 'initialize' | 'render';
4
+ /**
5
+ * Turns whatever stopped an application from starting into a list of implementation errors, so that
6
+ * a host handles one shape. A list is passed through and a single implementation error becomes a
7
+ * list of one. Anything else, such as a project file that throws while it loads, becomes one
8
+ * `STARTUP_FAILED` error that names the stage and keeps what was thrown as its `cause`.
9
+ */
10
+ export declare const toImplementationErrors: (error: unknown, stage: StartupStage) => ImplementationErrors;
@@ -0,0 +1 @@
1
+ import{ImplementationError as e,isImplementationError as i}from"./implementation-error.js";import{ImplementationErrors as t,isImplementationErrors as r}from"./implementation-errors.js";let n={import:"while its code was loading",initialize:"while its runtime was initializing",render:"while it was rendering"};export const toImplementationErrors=(o,a)=>r(o)?o:i(o)?new t([o]):new t([new e({code:"STARTUP_FAILED",origin:null,problem:`The application failed ${n[a]}: ${o instanceof Error?o.message:String(o)}`,fix:"Read the stack trace of the cause to find the file that threw, and fix the code it points to.",cause:o})]);
@@ -1,6 +1,7 @@
1
1
  export * from './domain-runtime.js';
2
2
  export * from './domain-context/index.js';
3
3
  export * from './domain-services/index.js';
4
+ export { type ImplementationErrorCode, type ImplementationErrorProps, type StartupStage, ImplementationError, ImplementationErrors, isImplementationError, isImplementationErrors, toImplementationErrors, } from './errors/index.js';
4
5
  export * from './spec/index.js';
5
6
  export * from './environment/index.js';
6
7
  export * from './access/index.js';
@@ -1 +1 @@
1
- export*from"./domain-runtime.js";export*from"./domain-context/index.js";export*from"./domain-services/index.js";export*from"./spec/index.js";export*from"./environment/index.js";export*from"./access/index.js";export*from"./overrides/index.js";export*from"./loaded-data/index.js";export*from"./domain-data/index.js";export*from"./session-context/index.js";export*from"./web-component/index.js";
1
+ export*from"./domain-runtime.js";export*from"./domain-context/index.js";export*from"./domain-services/index.js";export{ImplementationError,ImplementationErrors,isImplementationError,isImplementationErrors,toImplementationErrors}from"./errors/index.js";export*from"./spec/index.js";export*from"./environment/index.js";export*from"./access/index.js";export*from"./overrides/index.js";export*from"./loaded-data/index.js";export*from"./domain-data/index.js";export*from"./session-context/index.js";export*from"./web-component/index.js";
@@ -0,0 +1,24 @@
1
+ import { type AnonymousExpression, type AnyAliasMap, type Violation } from '../../core/index.js';
2
+ import { type AnyInvariant, type ProjectModule } from './module-checks/index.js';
3
+ /**
4
+ * The `$violations` expression of every entity type that has invariants, keyed by entity type.
5
+ *
6
+ * The entity and data types are erased: the expression only passes its arguments on to the invariants,
7
+ * and `DomainBuilder.withExpressions` accepts it for any project.
8
+ */
9
+ type ViolationExpressions = Readonly<Record<string, {
10
+ readonly $violations: AnonymousExpression<any, any, any, any, any, any, ReadonlyArray<Violation<string>>>;
11
+ }>>;
12
+ /**
13
+ * Creates the `$violations` expressions of a domain from its invariants.
14
+ *
15
+ * Takes the invariants of the `src/invariants/` files, as the generated barrel lists them, after
16
+ * checking each file against the folder's contract. An invariant declared for an alias applies to
17
+ * every entity type of the alias. The `$violations` expression of an entity type returns the
18
+ * violations of all its invariants: those of `commonInvariants` first, then those of the files in
19
+ * the order of the barrel.
20
+ *
21
+ * @param commonInvariants Invariants the SDK adds to the domain, such as the ones every admin domain has.
22
+ */
23
+ export declare const createViolationExpressions: (aliasMap: AnyAliasMap, modules: readonly ProjectModule[], commonInvariants?: Readonly<Record<string, readonly AnyInvariant[]>>) => ViolationExpressions;
24
+ export {};
@@ -0,0 +1 @@
1
+ import{expandAlias as e}from"../../core/index.js";import{resolveInvariantModules as t}from"./module-checks/index.js";export const createViolationExpressions=(o,r,l={})=>{let f={};for(let i of[l,t(r)])for(let[t,r]of Object.entries(i))for(let l of e(o,t))f[l]=[...f[l]??[],...r];let i={};for(let[e,t]of Object.entries(f))i[e]={$violations:{evaluate:(e,o,r)=>t.flatMap(t=>t.evaluate(e,o,r)),meta:{}}};return i};
@@ -1,8 +1,8 @@
1
1
  export * from './selectors.js';
2
2
  export type * from './types.js';
3
3
  export * from './actions.js';
4
+ export * from './create-violation-expressions.js';
4
5
  export * from './initialize.js';
5
- export * from './invariant-builder.js';
6
6
  export * from './memoize-expression.js';
7
7
  export { type PhoenixEntityElementProps, type PhoenixEntityElementRegistration, type PhoenixLayoutElementRegistration, type PhoenixIconRegistration, type ElementRegistration, type CustomPhoenixEntityElementProps, type PhoenixLayoutElementDefinition, type PhoenixEntityElementDefinition, type CreateCustomPhoenixLayoutElement, type CreateCustomPhoenixEntityElement, createPhoenixLayoutElement, createPhoenixEntityElement, createCustomPhoenixLayoutElement, createCustomPhoenixEntityElement, resolveElementModule, resolveElementModules, type PhoenixHandlerDefinition, type SystemPhoenixHandlerDefinition, type PhoenixHandlerRegistration, type SystemPhoenixHandlerRegistration, type SystemPhoenixAsyncHandlerDefinition, type SystemPhoenixAsyncHandlerRegistration, type HandlerRegistration, type CreatePhoenixHandler, createPhoenixHandler, createSystemPhoenixHandler, createSystemPhoenixAsyncHandler, resolveHandlerModule, resolveHandlerModules, type ProjectModule, resolveActionModules, resolveComponentOpticModules, type ExpressionModule, resolveExpressionModules, resolveImportedTransformers, resolveTransformerModule, resolveTransformerModules, resolveInvariantModules, } from './module-checks/index.js';
8
8
  export * from './prepare-action-implementations.js';
@@ -1 +1 @@
1
- export*from"./selectors.js";export*from"./actions.js";export*from"./initialize.js";export*from"./invariant-builder.js";export*from"./memoize-expression.js";export{createPhoenixLayoutElement,createPhoenixEntityElement,createCustomPhoenixLayoutElement,createCustomPhoenixEntityElement,resolveElementModule,resolveElementModules,createPhoenixHandler,createSystemPhoenixHandler,createSystemPhoenixAsyncHandler,resolveHandlerModule,resolveHandlerModules,resolveActionModules,resolveComponentOpticModules,resolveExpressionModules,resolveImportedTransformers,resolveTransformerModule,resolveTransformerModules,resolveInvariantModules}from"./module-checks/index.js";export*from"./prepare-action-implementations.js";export*from"./prepare-domain-expressions.js";
1
+ export*from"./selectors.js";export*from"./actions.js";export*from"./create-violation-expressions.js";export*from"./initialize.js";export*from"./memoize-expression.js";export{createPhoenixLayoutElement,createPhoenixEntityElement,createCustomPhoenixLayoutElement,createCustomPhoenixEntityElement,resolveElementModule,resolveElementModules,createPhoenixHandler,createSystemPhoenixHandler,createSystemPhoenixAsyncHandler,resolveHandlerModule,resolveHandlerModules,resolveActionModules,resolveComponentOpticModules,resolveExpressionModules,resolveImportedTransformers,resolveTransformerModule,resolveTransformerModules,resolveInvariantModules}from"./module-checks/index.js";export*from"./prepare-action-implementations.js";export*from"./prepare-domain-expressions.js";
@@ -1,3 +1,14 @@
1
1
  import type { AnyApplicationConfig } from '../../application/index.js';
2
2
  import type { ApplicationSpec } from './types.js';
3
+ /**
4
+ * Builds the runtime spec of an application from its config.
5
+ *
6
+ * Project files reach the config unchecked; this is where each one is held to its folder's
7
+ * contract. Every file is checked on its own, and all the files that break their contract are
8
+ * thrown together as one `ImplementationErrors`. Its errors are ordered by folder (handlers,
9
+ * elements, transformers, configurator components, admin components) and inside a folder by the
10
+ * order of the config's list. No spec is returned when a file is wrong, so nothing that reads the
11
+ * spec, such as the transformer selection, runs on a list with a file missing and reports the
12
+ * mistake a second time.
13
+ */
3
14
  export declare const initializeSpec: (config: AnyApplicationConfig) => ApplicationSpec;
@@ -1 +1 @@
1
- import{SessionRole as e}from"@salsita-ai/contracts/api";import{resolveComponentOpticModules as t,resolveElementModules as a,resolveHandlerModules as n,resolveImportedTransformers as o,resolveTransformerModules as i}from"./module-checks/index.js";export const initializeSpec=s=>{let r=s.adminDomain.presets[0];if(!r)throw Error("Cannot register application spec because admin preset is required.");let m=n(s.handlers),c=a(s.elements),d=(e=>{let t={};for(let a of e)t[a.name]=(void 0)??a.name;return t})(m),l=(e=>{let t={},a=0;for(let n of e)if("entity"===n.type||"layout"===n.type)t[n.name]=(void 0)??n.name;else{let e=`icon:${a}`;t[e]=(void 0)??`${e}:${n.elements.length}`,a+=1}return t})(c),p=i(s.transformers?.importedTransformers??[]),y=s.transformers?.specTransformers??[];return{version:s.version,dataConfig:s.dataSpec??null,chunks:s.chunks,publishedDataHash:s.publishedDataHash,initialPublishedData:s.initialPublishedData,canCreate:s.features?.acl?.canCreate??Object.values(e),enableAdminRelease:s.features?.enableAdminRelease??!1,textLanguages:s.domain.textLanguages??s.adminDomain.textLanguages??["en"],baseResourcesUrl:s.resources?.baseResourcesUrl??s.defaultEnvs?.resourcesUrl??"",configurator:{factory:s.domain.domainFactory,presets:s.domain.presets,aliasMap:s.domain.domainFactory.context.aliasMap,entityReflections:s.domain.domainFactory.context.entityReflections,$entityReflections:s.domain.domainFactory.context.$entityReflections,expressions:s.domain.domainFactory.context.expressions,actions:s.domain.domainFactory.context.actions,actionImplementations:s.domain.domainFactory.context.actionImplementations,allowedRootEntityTypes:s.domain.domainFactory.context.allowedRootEntityTypes,migrate:s.domain.domainFactory.context.migrate,componentOptics:t(s.domain.componentOptics),createTransformers:e=>o(p,y,e),navigationStates:s.navigation?.navigationStates??[],viewStates:s.navigation?.viewStates??[],toolStates:s.navigation?.toolStates??[],exportStates:s.navigation?.exportStates??[],handlers:m,handlerHashes:d,elements:c,elementHashes:l,appLoader:s.ui?.appLoader??"universal",preview:s.ui?.preview??"auto",alwaysExpand:s.ui?.alwaysExpand??!1,theme:s.ui?.theme??{},assistant:s.assistant??null,deploymentQueryDisabled:s.resources?.deploymentQueryDisabled??!1,prefetchTextureUrls:s.resources?.prefetchTextureUrls??[],modelVersion:s.domain.domainFactory.modelVersion},admin:{factory:s.adminDomain.domainFactory,modelVersion:s.adminDomain.domainFactory.modelVersion,aliasMap:s.adminDomain.domainFactory.context.aliasMap,entityReflections:s.adminDomain.domainFactory.context.entityReflections,$entityReflections:s.adminDomain.domainFactory.context.$entityReflections,expressions:s.adminDomain.domainFactory.context.expressions,actions:s.adminDomain.domainFactory.context.actions,actionImplementations:s.adminDomain.domainFactory.context.actionImplementations,allowedRootEntityTypes:s.adminDomain.domainFactory.context.allowedRootEntityTypes,migrate:s.adminDomain.domainFactory.context.migrate,preset:r,componentOptics:t(s.adminDomain.componentOptics),navigationStates:s.adminNavigation?.navigationStates??[],viewStates:s.adminNavigation?.viewStates??[],handlers:m,handlerHashes:d,elements:c,elementHashes:l}}};
1
+ import{SessionRole as e}from"@salsita-ai/contracts/api";import{createImplementationErrorCollector as t}from"../errors/index.js";import{resolveComponentOpticModules as a,resolveElementModule as n,resolveHandlerModule as o,resolveImportedTransformers as i,resolveTransformerModule as s}from"./module-checks/index.js";let r=(e,t,a)=>e.flatMap(e=>a.attempt(()=>t(e),[]));export const initializeSpec=m=>{let c=m.adminDomain.presets[0];if(!c)throw Error("Cannot register application spec because admin preset is required.");let d=t(),l=r(m.handlers,o,d),p=r(m.elements,n,d),y=r(m.transformers?.importedTransformers??[],e=>[s(e)],d),u=r(m.domain.componentOptics,e=>a([e]),d),f=r(m.adminDomain.componentOptics,e=>a([e]),d);d.throwIfAny();let x=(e=>{let t={};for(let a of e)t[a.name]=(void 0)??a.name;return t})(l),g=(e=>{let t={},a=0;for(let n of e)if("entity"===n.type||"layout"===n.type)t[n.name]=(void 0)??n.name;else{let e=`icon:${a}`;t[e]=(void 0)??`${e}:${n.elements.length}`,a+=1}return t})(p),v=m.transformers?.specTransformers??[];return{version:m.version,dataConfig:m.dataSpec??null,chunks:m.chunks,publishedDataHash:m.publishedDataHash,initialPublishedData:m.initialPublishedData,canCreate:m.features?.acl?.canCreate??Object.values(e),enableAdminRelease:m.features?.enableAdminRelease??!1,textLanguages:m.domain.textLanguages??m.adminDomain.textLanguages??["en"],baseResourcesUrl:m.resources?.baseResourcesUrl??m.defaultEnvs?.resourcesUrl??"",configurator:{factory:m.domain.domainFactory,presets:m.domain.presets,aliasMap:m.domain.domainFactory.context.aliasMap,entityReflections:m.domain.domainFactory.context.entityReflections,$entityReflections:m.domain.domainFactory.context.$entityReflections,expressions:m.domain.domainFactory.context.expressions,actions:m.domain.domainFactory.context.actions,actionImplementations:m.domain.domainFactory.context.actionImplementations,allowedRootEntityTypes:m.domain.domainFactory.context.allowedRootEntityTypes,migrate:m.domain.domainFactory.context.migrate,componentOptics:u,createTransformers:e=>i(y,v,e),navigationStates:m.navigation?.navigationStates??[],viewStates:m.navigation?.viewStates??[],toolStates:m.navigation?.toolStates??[],exportStates:m.navigation?.exportStates??[],handlers:l,handlerHashes:x,elements:p,defaultElements:m.defaultElements??[],elementHashes:g,appLoader:m.ui?.appLoader??"universal",preview:m.ui?.preview??"auto",alwaysExpand:m.ui?.alwaysExpand??!1,theme:m.ui?.theme??{},assistant:m.assistant??null,deploymentQueryDisabled:m.resources?.deploymentQueryDisabled??!1,prefetchTextureUrls:m.resources?.prefetchTextureUrls??[],modelVersion:m.domain.domainFactory.modelVersion},admin:{factory:m.adminDomain.domainFactory,modelVersion:m.adminDomain.domainFactory.modelVersion,aliasMap:m.adminDomain.domainFactory.context.aliasMap,entityReflections:m.adminDomain.domainFactory.context.entityReflections,$entityReflections:m.adminDomain.domainFactory.context.$entityReflections,expressions:m.adminDomain.domainFactory.context.expressions,actions:m.adminDomain.domainFactory.context.actions,actionImplementations:m.adminDomain.domainFactory.context.actionImplementations,allowedRootEntityTypes:m.adminDomain.domainFactory.context.allowedRootEntityTypes,migrate:m.adminDomain.domainFactory.context.migrate,preset:c,componentOptics:f,navigationStates:m.adminNavigation?.navigationStates??[],viewStates:m.adminNavigation?.viewStates??[],handlers:l,handlerHashes:x,elements:p,elementHashes:g}}};
@@ -5,4 +5,4 @@ export { resolveActionModules } from './resolve-action-modules.js';
5
5
  export { resolveComponentOpticModules } from './resolve-component-optic-modules.js';
6
6
  export { type ExpressionModule, resolveExpressionModules } from './resolve-expression-modules.js';
7
7
  export { resolveImportedTransformers, resolveTransformerModule, resolveTransformerModules, } from './resolve-imported-transformers.js';
8
- export { resolveInvariantModules } from './resolve-invariant-modules.js';
8
+ export { type AnyInvariant, resolveInvariantModules } from './resolve-invariant-modules.js';
@@ -1,3 +1,4 @@
1
+ import { ImplementationError } from '../../errors/index.js';
1
2
  /**
2
3
  * The default export of one file in a project convention folder (`src/elements/`, `src/handlers/`,
3
4
  * `src/expressions/`, …), paired with the project-relative path it was imported from.
@@ -17,7 +18,13 @@ export interface ProjectModuleContract {
17
18
  }
18
19
  export declare const SHARED_FOLDER_HINT = "or move the file to an underscore-prefixed folder such as src/_shared/ when it is shared code";
19
20
  export declare const isRecord: (value: unknown) => value is Record<string, unknown>;
20
- export declare const createContractError: (origin: string, contract: ProjectModuleContract, received: unknown) => Error;
21
+ /**
22
+ * The error of a file whose default export does not match its folder's contract. `received` is the
23
+ * value the message reports: the export itself, or the item of an array export that fails. The
24
+ * code is `MISSING_EXPORT` when the file has no default export at all, and `INVALID_EXPORT`
25
+ * otherwise, also when an item of an array export is `undefined`.
26
+ */
27
+ export declare const createContractError: (module: ProjectModule, contract: ProjectModuleContract, received: unknown) => ImplementationError;
21
28
  /**
22
29
  * Checks a file of a folder whose contract is one item or an array of them, and returns its items.
23
30
  * The first item that fails the check is the value the error reports.
@@ -1 +1 @@
1
- export const SHARED_FOLDER_HINT="or move the file to an underscore-prefixed folder such as src/_shared/ when it is shared code";export const isRecord=e=>"object"==typeof e&&null!==e&&!Array.isArray(e);export const createContractError=(e,r,t)=>Error(`Invalid default export in ${e}: expected ${r.expected}, but got ${(e=>{if(void 0===e)return"nothing (the file has no default export)";if(null===e)return"null";if("function"==typeof e)return e.name?`the function "${e.name}"`:"an anonymous function";if(Array.isArray(e))return`an array of ${e.length} item(s)`;if(isRecord(e)){let r=Object.keys(e);return r.length>0?`an object with the keys ${r.join(", ")}`:"an empty object"}return`the ${typeof e} ${JSON.stringify(e)}`})(t)}. Every file in this folder is loaded by convention, so each one must default-export that shape. ${r.fix}`);export const resolveListModule=(e,r,t)=>{let o=Array.isArray(e.exports)?e.exports:[e.exports],n=[];for(let i of o){if(!t(i))throw createContractError(e.origin,r,i);n.push(i)}return n};
1
+ import{ImplementationError as e}from"../../errors/index.js";export const SHARED_FOLDER_HINT="or move the file to an underscore-prefixed folder such as src/_shared/ when it is shared code";export const isRecord=e=>"object"==typeof e&&null!==e&&!Array.isArray(e);export const createContractError=(r,t,o)=>new e({code:void 0===r.exports?"MISSING_EXPORT":"INVALID_EXPORT",origin:r.origin,problem:"Invalid default export",expected:t.expected,received:(e=>{if(void 0===e)return"nothing (the file has no default export)";if(null===e)return"null";if("function"==typeof e)return e.name?`the function "${e.name}"`:"an anonymous function";if(Array.isArray(e))return`an array of ${e.length} item(s)`;if(isRecord(e)){let r=Object.keys(e);return r.length>0?`an object with the keys ${r.join(", ")}`:"an empty object"}return`the ${typeof e} ${JSON.stringify(e)}`})(o),fix:`Every file in this folder is loaded by convention, so each one must default-export that shape. ${t.fix}`});export const resolveListModule=(e,r,t)=>{let o=Array.isArray(e.exports)?e.exports:[e.exports],n=[];for(let i of o){if(!t(i))throw createContractError(e,r,i);n.push(i)}return n};
@@ -1 +1 @@
1
- import{SHARED_FOLDER_HINT as e,createContractError as t,isRecord as o}from"./project-modules.js";let i={expected:"an object of action implementations keyed by action name",fix:`Create it with phx.domain.implementActions({ ... }), ${e}.`},n=e=>"function"==typeof e;export const resolveActionModules=e=>e.reduce((e,r)=>{let c;if(!(o(c=r.exports)&&Object.values(c).every(n)))throw t(r.origin,i,r.exports);return{...e,...r.exports}},{});
1
+ import{SHARED_FOLDER_HINT as e,createContractError as t,isRecord as o}from"./project-modules.js";let i={expected:"an object of action implementations keyed by action name",fix:`Create it with phx.domain.implementActions({ ... }), ${e}.`},n=e=>"function"==typeof e;export const resolveActionModules=e=>e.reduce((e,r)=>{let c;if(!(o(c=r.exports)&&Object.values(c).every(n)))throw t(r,i,r.exports);return{...e,...r.exports}},{});
@@ -1 +1 @@
1
- import{SHARED_FOLDER_HINT as e,createContractError as o,isRecord as t}from"./project-modules.js";let i={expected:"an object of expressions keyed by entity type or alias, then by expression name",fix:`Create it with phx.domain.implementCustomExpressions({ ... }) (phx.domain.admin.implementCustomExpressions({ ... }) under src/admin/), ${e}.`},r=e=>t(e)&&"function"==typeof e.evaluate,n=e=>t(e)&&Object.values(e).every(r);export const resolveExpressionModules=(e,r)=>{let s=new Map;return e.map(e=>{let p;if(!(t(p=e.exports)&&Object.values(p).every(n)))throw o(e.origin,i,e.exports);for(let[o,t]of Object.entries(e.exports))for(let i of r[o]??[o])for(let o of Object.keys(t)){let t=`${i}.${o}`,r=s.get(t);if(void 0!==r&&r!==e.origin)throw Error(`Duplicate expression ${t}: it is defined in both ${r} and ${e.origin}, which would make its value depend on file order. Keep one definition and remove the other.`);s.set(t,e.origin)}return{origin:e.origin,expressions:e.exports}})};
1
+ import{SHARED_FOLDER_HINT as e,createContractError as o,isRecord as t}from"./project-modules.js";let i={expected:"an object of expressions keyed by entity type or alias, then by expression name",fix:`Create it with phx.domain.implementCustomExpressions({ ... }) (phx.domain.admin.implementCustomExpressions({ ... }) under src/admin/), ${e}.`},r=e=>t(e)&&"function"==typeof e.evaluate,n=e=>t(e)&&Object.values(e).every(r);export const resolveExpressionModules=(e,r)=>{let s=new Map;return e.map(e=>{let p;if(!(t(p=e.exports)&&Object.values(p).every(n)))throw o(e,i,e.exports);for(let[o,t]of Object.entries(e.exports))for(let i of r[o]??[o])for(let o of Object.keys(t)){let t=`${i}.${o}`,r=s.get(t);if(void 0!==r&&r!==e.origin)throw Error(`Duplicate expression ${t}: it is defined in both ${r} and ${e.origin}, which would make its value depend on file order. Keep one definition and remove the other.`);s.set(t,e.origin)}return{origin:e.origin,expressions:e.exports}})};
@@ -1,15 +1,13 @@
1
1
  import type { ImportedTransformer, SpecTransformer } from '../../../application/index.js';
2
- import type { $DomainEntity, DomainEntity } from '../../../core/index.js';
3
- import type { DomainContextSystems, Transformers } from '../../../domain-context/index.js';
2
+ import type { AnyDomainContextSystems, Transformers } from '../../../domain-context/index.js';
4
3
  import { type ProjectModule } from './project-modules.js';
5
- type AnyImportedTransformer = ImportedTransformer<any, any, any, any, any, any, any>;
6
4
  /**
7
5
  * The transformer of one `src/transformers/` file, named after the file. The spec's `transformers` section
8
6
  * selects a plain-function export by that name; a transformer made with `build(name)` registers under its own.
9
7
  */
10
- export declare const resolveTransformerModule: (module: ProjectModule) => AnyImportedTransformer;
8
+ export declare const resolveTransformerModule: (module: ProjectModule) => ImportedTransformer;
11
9
  /** Validates the `src/transformers/` files of an application config and names each after its file. */
12
- export declare const resolveTransformerModules: (modules: readonly ProjectModule[]) => readonly AnyImportedTransformer[];
10
+ export declare const resolveTransformerModules: (modules: readonly ProjectModule[]) => readonly ImportedTransformer[];
13
11
  /**
14
12
  * Resolves imported transformer modules against spec transformer declarations.
15
13
  * Each imported transformer is registered/executed with the domain context,
@@ -17,6 +15,8 @@ export declare const resolveTransformerModules: (modules: readonly ProjectModule
17
15
  *
18
16
  * Used both when the runtime spec is initialized from the application config and at hot-reload time
19
17
  * (via domain-context subscription to registry changes).
18
+ *
19
+ * The transformers come from untyped project modules, so the context and the result have the open types of
20
+ * `AnyCreateTransformersFactory`, the slot of the runtime spec this function fills.
20
21
  */
21
- export declare const resolveImportedTransformers: <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>(importedTransformers: ReadonlyArray<ImportedTransformer<ENTITIES, ALLOWED_ROOT_ENTITIES, $MAP, NAVIGATION_STATES, VIEW_STATES, TOOL_STATES, EXPORT_STATES>>, specTransformers: readonly SpecTransformer[], ctx: DomainContextSystems<ENTITIES, ALLOWED_ROOT_ENTITIES, $MAP, NAVIGATION_STATES, VIEW_STATES, TOOL_STATES, EXPORT_STATES>) => Transformers<ENTITIES>;
22
- export {};
22
+ export declare const resolveImportedTransformers: (importedTransformers: readonly ImportedTransformer[], specTransformers: readonly SpecTransformer[], ctx: AnyDomainContextSystems) => Transformers<any>;
@@ -1 +1 @@
1
- import{SHARED_FOLDER_HINT as r,createContractError as e,isRecord as t}from"./project-modules.js";let o={expected:"a transformer (a function of the domain context, or an object with a register method), or an array of them",fix:`Create it with phx.frontend.transformerBuilder, ${r}.`},n=r=>"function"==typeof r||t(r)&&"function"==typeof r.register;export const resolveTransformerModule=r=>{let t;if(!(Array.isArray(t=r.exports)?t.every(n):n(t)))throw e(r.origin,o,r.exports);return{name:r.origin.replace(/^.*\//,"").replace(/\.tsx?$/,""),transformer:r.exports}};export const resolveTransformerModules=r=>r.map(resolveTransformerModule);export const resolveImportedTransformers=(r,e,t)=>{let o=r.flatMap(({name:r,transformer:e})=>{if(Array.isArray(e))return e.map((e,o)=>{if("register"in e)return e.register(t);if("function"==typeof e)return{priority:1/0,transformer:e(t),name:`${r}[${o}]`};throw Error(`Transformer '${r}[${o}]' must be either a RegistrableTransformer (with register method) or a TransformerFactory (function)`)});if("register"in e)return e.register(t);if("function"==typeof e)return{priority:1/0,transformer:e(t),name:r};throw Error(`Transformer '${r}' must be either a RegistrableTransformer (with register method) or a TransformerFactory (function)`)}),n=[];for(let r of e){let e=o.find(e=>e.name===r.name);if(!e){let e=o.map(r=>r.name).filter(Boolean).join(", ");throw Error(`Transformer '${r.name}' not found in imported transformer files. Available transformers: ${e||"none"}`)}n.push({priority:r.priority??1/0,transformer:e.transformer,name:r.name})}return n};
1
+ import{SHARED_FOLDER_HINT as r,createContractError as e,isRecord as t}from"./project-modules.js";let o={expected:"a transformer (a function of the domain context, or an object with a register method), or an array of them",fix:`Create it with phx.frontend.transformerBuilder, ${r}.`},n=r=>"function"==typeof r||t(r)&&"function"==typeof r.register;export const resolveTransformerModule=r=>{let t;if(!(Array.isArray(t=r.exports)?t.every(n):n(t)))throw e(r,o,r.exports);return{name:r.origin.replace(/^.*\//,"").replace(/\.tsx?$/,""),transformer:r.exports}};export const resolveTransformerModules=r=>r.map(resolveTransformerModule);export const resolveImportedTransformers=(r,e,t)=>{let o=r.flatMap(({name:r,transformer:e})=>{if(Array.isArray(e))return e.map((e,o)=>{if("register"in e)return e.register(t);if("function"==typeof e)return{priority:1/0,transformer:e(t),name:`${r}[${o}]`};throw Error(`Transformer '${r}[${o}]' must be either a RegistrableTransformer (with register method) or a TransformerFactory (function)`)});if("register"in e)return e.register(t);if("function"==typeof e)return{priority:1/0,transformer:e(t),name:r};throw Error(`Transformer '${r}' must be either a RegistrableTransformer (with register method) or a TransformerFactory (function)`)}),n=[];for(let r of e){let e=o.find(e=>e.name===r.name);if(!e){let e=o.map(r=>r.name).filter(Boolean).join(", ");throw Error(`Transformer '${r.name}' not found in imported transformer files. Available transformers: ${e||"none"}`)}n.push({priority:r.priority??1/0,transformer:e.transformer,name:r.name})}return n};
@@ -1,6 +1,6 @@
1
1
  import type { Invariant } from '../../../core/index.js';
2
2
  import { type ProjectModule } from './project-modules.js';
3
- type AnyInvariant = Invariant<any, any, any, any, any, any, string>;
3
+ /** An invariant of any project: a file's default export does not carry the project's entity and data types. */
4
+ export type AnyInvariant = Invariant<any, any, any, any, any, any, string>;
4
5
  /** Validates the `src/invariants/` files and concatenates their invariants per entity type or alias. */
5
6
  export declare const resolveInvariantModules: (modules: readonly ProjectModule[]) => Readonly<Record<string, readonly AnyInvariant[]>>;
6
- export {};
@@ -1 +1 @@
1
- import{SHARED_FOLDER_HINT as e,createContractError as t,isRecord as r}from"./project-modules.js";let o={expected:"an object of invariant lists keyed by entity type or alias",fix:`Create it with phx.domain.implementCustomInvariants({ ... }) (phx.domain.admin.implementCustomInvariants({ ... }) under src/admin/), ${e}.`},i=e=>r(e)&&"function"==typeof e.evaluate,n=e=>r(e)&&Object.values(e).every(e=>Array.isArray(e)&&e.every(i));export const resolveInvariantModules=e=>{let r={};for(let i of e){if(!n(i.exports))throw t(i.origin,o,i.exports);for(let[e,t]of Object.entries(i.exports))r[e]=[...r[e]??[],...t]}return r};
1
+ import{SHARED_FOLDER_HINT as e,createContractError as t,isRecord as r}from"./project-modules.js";let o={expected:"an object of invariant lists keyed by entity type or alias",fix:`Create it with phx.domain.implementCustomInvariants({ ... }) (phx.domain.admin.implementCustomInvariants({ ... }) under src/admin/), ${e}.`},i=e=>r(e)&&"function"==typeof e.evaluate,n=e=>r(e)&&Object.values(e).every(e=>Array.isArray(e)&&e.every(i));export const resolveInvariantModules=e=>{let r={};for(let i of e){if(!n(i.exports))throw t(i,o,i.exports);for(let[e,t]of Object.entries(i.exports))r[e]=[...r[e]??[],...t]}return r};
@@ -1 +1 @@
1
- import{createSelector as e}from"@salsita-ai/common/utils";import{buildAssistantManifest as t}from"../../application/assistant/index.js";import{systemElementRegistry as n}from"./module-checks/index.js";export const createSpecSelectors=a=>{let{getState:s}=a,r=e.withTypes(),o=r([r.leaf(e=>e.spec)],e=>e),l=r([o],e=>e.version),i=r([o],e=>e.baseResourcesUrl),m=r([o],e=>e.configurator),g=r([o],e=>e.dataConfig),p=r([o],e=>e.chunks),d=r([o],e=>e.publishedDataHash),c=r([o],e=>e.initialPublishedData),u=r([o],e=>e.canCreate),h=r([o],e=>e.enableAdminRelease),y=r([o],e=>e.textLanguages),f=r([m],e=>e.modelVersion),C=r([o],e=>e.admin),x=r([C],e=>e.preset),A=r([C],e=>e.modelVersion),E=r([m],e=>e.theme),b=r([m],e=>e.assistant),H=r([b],e=>e?t(e):null),D=r([m],e=>e.factory),P=r([C],e=>e.factory),S=r([m],e=>e.componentOptics),w=r([C],e=>e.componentOptics),O=r([m],e=>e.appLoader),T=r([m],e=>e.preview),V=r([m],e=>e.alwaysExpand),L=r([m],e=>e.presets),R=r([m],e=>e.deploymentQueryDisabled),U=r([m],e=>e.prefetchTextureUrls),k=r([m],e=>e.handlerHashes),v=r([m],e=>e.handlers),j=r([v,k],(e,t)=>({...(e=>{let t={},n={},a={};for(let s of e)"phoenix"===s.type&&(t[s.name]=s.handler),"system"===s.type&&(n[s.name]=s.handler),"system-async"===s.type&&(a[s.name]=s.handler);return{handlers:t,systemHandlers:n,systemAsyncHandlers:a}})(e),hashes:t})),F=r([m],e=>e.elementHashes),M=r([m],e=>e.elements),Q=r([M,F],(e,t)=>({...(e=>{let t={},a={};for(let n of e)"layout"===n.type&&(t[n.name]=n.element),"entity"===n.type&&(a[n.name]=n.element);return{entityElements:{...n.entityElements,...a},layoutElements:{...n.layoutElements,...t}}})(e),hashes:t}));return{selectSpec:o,selectVersion:l,selectBaseResourcesUrl:i,selectConfiguratorSpec:m,selectConfiguratorModelVersion:f,selectAdminSpec:C,selectAdminPreset:x,selectAdminModelVersion:A,selectThemeOptions:E,selectAssistant:H,selectConfiguratorFactory:D,selectAdminFactory:P,selectConfiguratorComponentOptics:S,selectAdminComponentOptics:w,selectAppLoader:O,selectPreview:T,selectAlwaysExpand:V,selectPresetSeed:L,selectDeploymentQueryDisabled:R,selectPrefetchTextureUrls:U,selectTextLanguages:y,selectHandlerHashes:k,selectHandlers:v,selectHandlerSlots:j,selectElementHashes:F,selectElements:M,selectElementSlots:Q,selectDataConfig:g,selectChunks:p,selectPublishedDataHash:d,selectInitialPublishedData:c,selectCanCreate:u,selectEnableAdminRelease:h,getVersion:()=>l(s()),getBaseResourcesUrl:()=>i(s()),getConfiguratorSpec:()=>m(s()),getConfiguratorModelVersion:()=>f(s()),getAdminSpec:()=>C(s()),getAdminPreset:()=>x(s()),getAdminModelVersion:()=>A(s()),getThemeOptions:()=>E(s()),getAssistant:()=>H(s()),getConfiguratorFactory:()=>D(s()),getAdminFactory:()=>P(s()),getConfiguratorComponentOptics:()=>S(s()),getAdminComponentOptics:()=>w(s()),getAppLoader:()=>O(s()),getPreview:()=>T(s()),getAlwaysExpand:()=>V(s()),getPresetSeed:()=>L(s()),getDeploymentQueryDisabled:()=>R(s()),getPrefetchTextureUrls:()=>U(s()),getTextLanguages:()=>y(s()),getHandlerHashes:()=>k(s()),getHandlers:()=>v(s()),getHandlerSlots:()=>j(s()),getElementHashes:()=>F(s()),getElements:()=>M(s()),getElementSlots:()=>Q(s()),getDataConfig:()=>g(s()),getChunks:()=>p(s()),getPublishedDataHash:()=>d(s()),getInitialPublishedData:()=>c(s()),getCanCreate:()=>u(s()),getEnableAdminRelease:()=>h(s())}};
1
+ import{createSelector as e}from"@salsita-ai/common/utils";import{buildAssistantManifest as t}from"../../application/assistant/index.js";import{systemElementRegistry as n}from"./module-checks/index.js";export const createSpecSelectors=a=>{let{getState:s}=a,r=e.withTypes(),l=r([r.leaf(e=>e.spec)],e=>e),o=r([l],e=>e.version),i=r([l],e=>e.baseResourcesUrl),m=r([l],e=>e.configurator),g=r([l],e=>e.dataConfig),p=r([l],e=>e.chunks),d=r([l],e=>e.publishedDataHash),c=r([l],e=>e.initialPublishedData),u=r([l],e=>e.canCreate),h=r([l],e=>e.enableAdminRelease),y=r([l],e=>e.textLanguages),f=r([m],e=>e.modelVersion),C=r([l],e=>e.admin),E=r([C],e=>e.preset),x=r([C],e=>e.modelVersion),A=r([m],e=>e.theme),b=r([m],e=>e.assistant),H=r([b],e=>e?t(e):null),D=r([m],e=>e.factory),P=r([C],e=>e.factory),S=r([m],e=>e.componentOptics),w=r([C],e=>e.componentOptics),O=r([m],e=>e.appLoader),T=r([m],e=>e.preview),V=r([m],e=>e.alwaysExpand),L=r([m],e=>e.presets),R=r([m],e=>e.deploymentQueryDisabled),U=r([m],e=>e.prefetchTextureUrls),k=r([m],e=>e.handlerHashes),v=r([m],e=>e.handlers),j=r([v,k],(e,t)=>({...(e=>{let t={},n={},a={};for(let s of e)"phoenix"===s.type&&(t[s.name]=s.handler),"system"===s.type&&(n[s.name]=s.handler),"system-async"===s.type&&(a[s.name]=s.handler);return{handlers:t,systemHandlers:n,systemAsyncHandlers:a}})(e),hashes:t})),F=r([m],e=>e.elementHashes),M=r([m],e=>e.elements),Q=r([m],e=>e.defaultElements),B=r([Q,M,F],(e,t,a)=>({...(e=>{let t={},a={};for(let n of e)"layout"===n.type&&(t[n.name]=n.element),"entity"===n.type&&(a[n.name]=n.element);return{entityElements:{...n.entityElements,...a},layoutElements:{...n.layoutElements,...t}}})([...e,...t]),hashes:a}));return{selectSpec:l,selectVersion:o,selectBaseResourcesUrl:i,selectConfiguratorSpec:m,selectConfiguratorModelVersion:f,selectAdminSpec:C,selectAdminPreset:E,selectAdminModelVersion:x,selectThemeOptions:A,selectAssistant:H,selectConfiguratorFactory:D,selectAdminFactory:P,selectConfiguratorComponentOptics:S,selectAdminComponentOptics:w,selectAppLoader:O,selectPreview:T,selectAlwaysExpand:V,selectPresetSeed:L,selectDeploymentQueryDisabled:R,selectPrefetchTextureUrls:U,selectTextLanguages:y,selectHandlerHashes:k,selectHandlers:v,selectHandlerSlots:j,selectElementHashes:F,selectElements:M,selectElementSlots:B,selectDataConfig:g,selectChunks:p,selectPublishedDataHash:d,selectInitialPublishedData:c,selectCanCreate:u,selectEnableAdminRelease:h,getVersion:()=>o(s()),getBaseResourcesUrl:()=>i(s()),getConfiguratorSpec:()=>m(s()),getConfiguratorModelVersion:()=>f(s()),getAdminSpec:()=>C(s()),getAdminPreset:()=>E(s()),getAdminModelVersion:()=>x(s()),getThemeOptions:()=>A(s()),getAssistant:()=>H(s()),getConfiguratorFactory:()=>D(s()),getAdminFactory:()=>P(s()),getConfiguratorComponentOptics:()=>S(s()),getAdminComponentOptics:()=>w(s()),getAppLoader:()=>O(s()),getPreview:()=>T(s()),getAlwaysExpand:()=>V(s()),getPresetSeed:()=>L(s()),getDeploymentQueryDisabled:()=>R(s()),getPrefetchTextureUrls:()=>U(s()),getTextLanguages:()=>y(s()),getHandlerHashes:()=>k(s()),getHandlers:()=>v(s()),getHandlerSlots:()=>j(s()),getElementHashes:()=>F(s()),getElements:()=>M(s()),getElementSlots:()=>B(s()),getDataConfig:()=>g(s()),getChunks:()=>p(s()),getPublishedDataHash:()=>d(s()),getInitialPublishedData:()=>c(s()),getCanCreate:()=>u(s()),getEnableAdminRelease:()=>h(s())}};
@@ -35,6 +35,8 @@ export interface ApplicationConfiguratorSpec {
35
35
  */
36
36
  readonly handlerHashes: Record<string, string>;
37
37
  readonly elements: readonly ElementRegistration[];
38
+ /** The SDK's default element registrations; an entry of `elements` with the same name replaces one. */
39
+ readonly defaultElements: readonly ElementRegistration[];
38
40
  /**
39
41
  * Per-element content hash. Used as remount key so only the specific element
40
42
  * whose source changed remounts. Unchanged elements keep their hash and stay mounted.
@@ -1,5 +1,5 @@
1
1
  export declare const AttributeSwitchValueSchema: {
2
- readonly type: ["string", "number", "boolean"];
2
+ readonly type: 'boolean';
3
3
  };
4
4
  export type AttributeSwitchComponentState = {
5
5
  readonly value: boolean;
@@ -1 +1 @@
1
- import{SystemComponentBuilder as t}from"../core/index.js";export const AttributeSwitchValueSchema={type:["string","number","boolean"]};export const attributeSwitchComponent=t.component("attributeSwitch").withState({type:"object",properties:{value:AttributeSwitchValueSchema},tsType:"AttributeSwitchComponentState",import:[{module:"@salsita-ai/sdk/domain",member:"AttributeSwitchComponentState"}],required:["value"],additionalProperties:!1}).withWritableKeys(["value"]).build();
1
+ import{SystemComponentBuilder as t}from"../core/index.js";export const AttributeSwitchValueSchema={type:"boolean"};export const attributeSwitchComponent=t.component("attributeSwitch").withState({type:"object",properties:{value:AttributeSwitchValueSchema},tsType:"AttributeSwitchComponentState",import:[{module:"@salsita-ai/sdk/domain",member:"AttributeSwitchComponentState"}],required:["value"],additionalProperties:!1}).withWritableKeys(["value"]).build();