@salsita-ai/sdk 0.50.0-develop.1ddc7020fd → 0.50.0-develop.26a71cda28

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 (809) hide show
  1. package/README.md +3 -3
  2. package/dist/admin/create-admin-pages-from-spec.d.ts +1 -1
  3. package/dist/application-spec/core/components/component-filter.d.ts +53 -0
  4. package/dist/application-spec/core/components/component-filter.js +1 -0
  5. package/dist/application-spec/core/components/index.d.ts +2 -0
  6. package/dist/application-spec/core/components/index.js +1 -0
  7. package/dist/application-spec/core/components/sdk-code-ref.d.ts +9 -0
  8. package/dist/application-spec/core/components/sdk-code-ref.js +1 -0
  9. package/dist/application-spec/core/enhanced-json-value.d.ts +0 -68
  10. package/dist/application-spec/core/enhanced-json-value.js +1 -1
  11. package/dist/application-spec/core/index.d.ts +1 -0
  12. package/dist/application-spec/core/index.js +1 -1
  13. package/dist/application-spec/core/json-value.d.ts +1 -1
  14. package/dist/application-spec/{core → enhanced-json}/eval-to-constant.d.ts +1 -1
  15. package/dist/application-spec/enhanced-json/index.d.ts +4 -0
  16. package/dist/application-spec/enhanced-json/index.js +1 -0
  17. package/dist/application-spec/enhanced-json/is-enhanced-json-array.d.ts +2 -0
  18. package/dist/application-spec/enhanced-json/is-enhanced-json-array.js +1 -0
  19. package/dist/application-spec/enhanced-json/resolve-enhanced-json-value.d.ts +18 -0
  20. package/dist/application-spec/enhanced-json/resolve-enhanced-json-value.js +1 -0
  21. package/dist/application-spec/enhanced-json/schema-from-value.d.ts +24 -0
  22. package/dist/application-spec/enhanced-json/schema-from-value.js +1 -0
  23. package/dist/application-spec/enhanced-json/stringify-enhanced-json-value.d.ts +14 -0
  24. package/dist/application-spec/enhanced-json/stringify-enhanced-json-value.js +1 -0
  25. package/dist/application-spec/enhanced-json/validate-enhanced-json-value-caps.d.ts +12 -0
  26. package/dist/application-spec/enhanced-json/validate-enhanced-json-value-caps.js +1 -0
  27. package/dist/application-spec/enhanced-json/validate-no-legacy-code-ref.d.ts +13 -0
  28. package/dist/application-spec/enhanced-json/validate-no-legacy-code-ref.js +1 -0
  29. package/dist/application-spec/errors/diagnostic-codes.d.ts +9 -0
  30. package/dist/application-spec/errors/diagnostic-codes.js +1 -1
  31. package/dist/application-spec/errors/diagnostic-messages.d.ts +12 -0
  32. package/dist/application-spec/errors/diagnostic-messages.js +1 -1
  33. package/dist/application-spec/generate-application/code/project-scaffolding.d.ts +8 -1
  34. package/dist/application-spec/generate-application/code/project-scaffolding.js +2 -2
  35. package/dist/application-spec/generate-application/code/templates/domain-spec/generate-component-optics.js +4 -4
  36. package/dist/application-spec/generate-application/code/templates/domain-spec/generate-defaults.d.ts +4 -2
  37. package/dist/application-spec/generate-application/code/templates/domain-spec/generate-defaults.js +1 -1
  38. package/dist/application-spec/generate-application/code/templates/domain-spec/generate-domain-block.js +56 -56
  39. package/dist/application-spec/generate-application/code/templates/domain-spec/generate-invariants.d.ts +1 -1
  40. package/dist/application-spec/generate-application/code/templates/domain-spec/generate-invariants.js +1 -1
  41. package/dist/application-spec/generate-application/code/templates/domain-spec/generate-phx-globals.js +3 -0
  42. package/dist/application-spec/generate-application/code/templates/domain-spec/generate-relation-expressions.js +1 -1
  43. package/dist/application-spec/generate-application/code/templates/domain-spec/generate-resources.d.ts +6 -8
  44. package/dist/application-spec/generate-application/code/templates/domain-spec/generate-resources.js +11 -11
  45. package/dist/application-spec/generate-application/code/templates/domain-spec/index.d.ts +1 -1
  46. package/dist/application-spec/generate-application/code/templates/domain-spec/index.js +1 -1
  47. package/dist/application-spec/generate-application/code/templates/domain-spec.js +12 -12
  48. package/dist/application-spec/generate-application/code/templates/domain.js +3 -3
  49. package/dist/application-spec/generate-application/code/templates/globals.js +5 -4
  50. package/dist/application-spec/generate-application/code/templates/index.d.ts +0 -7
  51. package/dist/application-spec/generate-application/code/templates/index.js +1 -1
  52. package/dist/application-spec/generate-application/code/templates/package-json.js +1 -1
  53. package/dist/application-spec/generate-application/code/templates/skills/phoenix-create-configurator-skill.js +66 -42
  54. package/dist/application-spec/generate-application/code/templates/skills/phoenix-review-skill.js +8 -2
  55. package/dist/application-spec/generate-application/code/templates/skills/phoenix-skill.js +1 -1
  56. package/dist/application-spec/generate-application/code/templates/skills/sdk-content.d.ts +14 -14
  57. package/dist/application-spec/generate-application/code/templates/skills/sdk-content.js +6 -8
  58. package/dist/application-spec/generate-application/code/templates/webhook-builders.js +4 -3
  59. package/dist/application-spec/generate-application/code/templates/webhooks-config.js +2 -2
  60. package/dist/application-spec/generate-application/runtime/application-runtime.d.ts +1 -3
  61. package/dist/application-spec/generate-application/runtime/configurator-runtime/configurator-runtime.d.ts +1 -3
  62. package/dist/application-spec/generate-application/runtime/sections/build-sdk-optic.d.ts +1 -1
  63. package/dist/application-spec/generate-application/runtime/sections/build-sdk-optic.js +1 -1
  64. package/dist/application-spec/generate-application/runtime/sections/component-optic.d.ts +2 -1
  65. package/dist/application-spec/generate-application/runtime/sections/expression-runtime.js +1 -1
  66. package/dist/application-spec/generate-application/runtime/sections/transformers-runtime.d.ts +2 -4
  67. package/dist/application-spec/index.d.ts +1 -0
  68. package/dist/application-spec/index.js +1 -1
  69. package/dist/application-spec/parse-application-files/categorize/module-analysis.d.ts +1 -1
  70. package/dist/application-spec/parse-application-files/categorize/module-analysis.js +1 -1
  71. package/dist/application-spec/parse-application-files/raw-spec/raw-assistant.d.ts +16 -3
  72. package/dist/application-spec/parse-application-files/raw-spec/raw-assistant.js +1 -1
  73. package/dist/application-spec/parse-application-files/raw-spec/raw-spec-file.js +1 -1
  74. package/dist/application-spec/parse-application-files/spec/application/admin-spec/admin-spec.js +1 -1
  75. package/dist/application-spec/parse-application-files/spec/application/configurator-spec/configurator-spec.js +1 -1
  76. package/dist/application-spec/parse-application-files/spec/components/component-entry.d.ts +1 -9
  77. package/dist/application-spec/parse-application-files/spec/components/component-entry.js +1 -1
  78. package/dist/application-spec/parse-application-files/spec/components/component-filter.d.ts +1 -54
  79. package/dist/application-spec/parse-application-files/spec/components/component-filter.js +1 -1
  80. package/dist/application-spec/parse-application-files/spec/components/index.d.ts +1 -1
  81. package/dist/application-spec/parse-application-files/spec/components/index.js +1 -1
  82. package/dist/application-spec/parse-application-files/spec/expressions/memo-eval-plan.js +1 -1
  83. package/dist/application-spec/parse-application-files/spec/expressions/user-expressions.js +1 -1
  84. package/dist/application-spec/parse-application-files/spec/model/defaults.d.ts +7 -2
  85. package/dist/application-spec/parse-application-files/spec/model/defaults.js +1 -1
  86. package/dist/application-spec/parse-application-files/spec/relations/reference-field-type.d.ts +25 -0
  87. package/dist/application-spec/parse-application-files/spec/relations/reference-field-type.js +1 -0
  88. package/dist/application-spec/parse-application-files/spec/relations/relation-field-mismatch.d.ts +46 -0
  89. package/dist/application-spec/parse-application-files/spec/relations/relation-field-mismatch.js +1 -0
  90. package/dist/application-spec/parse-application-files/spec/relations/relations.d.ts +4 -3
  91. package/dist/application-spec/parse-application-files/spec/relations/relations.js +1 -1
  92. package/dist/application-spec/parse-application-files/spec/sections/assistant/assistant-schema.js +1 -1
  93. package/dist/application-spec/parse-application-files/spec/sections/infra.d.ts +2 -0
  94. package/dist/application-spec/parse-application-files/spec/sections/infra.js +1 -1
  95. package/dist/client/authorized-client.d.ts +3 -1
  96. package/dist/client/authorized-client.js +1 -1
  97. package/dist/client/contract.d.ts +34 -0
  98. package/dist/client/contract.js +1 -1
  99. package/dist/client/index.d.ts +2 -2
  100. package/dist/client/index.js +1 -1
  101. package/dist/client/local-authorized-client.d.ts +3 -1
  102. package/dist/client/local-authorized-client.js +1 -1
  103. package/dist/client/memory-authorized-client.d.ts +3 -1
  104. package/dist/client/memory-authorized-client.js +1 -1
  105. package/dist/client/phoenix-api.d.ts +311 -2
  106. package/dist/configurator/application-runtime/extensions/create-configurator-extensions.js +1 -1
  107. package/dist/configurator/application-runtime/extensions/selectors.d.ts +3 -1
  108. package/dist/configurator/application-runtime/extensions/selectors.js +1 -1
  109. package/dist/configurator/application-runtime/extensions/systems/assistant-system/assistant-system.d.ts +92 -3
  110. package/dist/configurator/application-runtime/extensions/systems/assistant-system/assistant-system.js +1 -1
  111. package/dist/configurator/application-runtime/extensions/systems/drag-and-drop-system/drag-and-drop-system.d.ts +3 -3
  112. package/dist/configurator/application-runtime/extensions/systems/graphql-system/entity-meta.js +1 -1
  113. package/dist/configurator/application-runtime/extensions/systems/graphql-system/graphql-system.d.ts +14 -4
  114. package/dist/configurator/application-runtime/extensions/systems/graphql-system/graphql-system.js +1 -1
  115. package/dist/configurator/application-runtime/extensions/systems/graphql-system/inject-assistant-lenses.d.ts +11 -0
  116. package/dist/configurator/application-runtime/extensions/systems/graphql-system/inject-assistant-lenses.js +1 -0
  117. package/dist/configurator/application-runtime/extensions/systems/index.d.ts +1 -1
  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 +5 -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/configurator-context/configurator-hooks/layout-hooks.d.ts +1 -1
  125. package/dist/configurator/pages/DefaultConfiguratorLayout.d.ts +6 -0
  126. package/dist/configurator/pages/DefaultConfiguratorLayout.js +1 -0
  127. package/dist/configurator/pages/LoadedConfiguratorDetailPage.js +1 -1
  128. package/dist/configurator/scene/scene-controls/hotspot-drag-handle/HotspotDragHandle.d.ts +1 -1
  129. package/dist/configurator/scene/scene-controls/hotspot-drag-handle/HotspotDragSceneHandle.d.ts +1 -1
  130. package/dist/configurator/scene/scene-entity/dimension-indicators/DimensionIndicator.d.ts +1 -1
  131. package/dist/configurator/scene/scene-entity/dimension-indicators/DimensionIndicatorInternal.d.ts +1 -1
  132. package/dist/configurator/scene/scene-entity/drag-and-drop/shared.d.ts +2 -2
  133. package/dist/configurator/scene/scene-entity/drag-and-drop/use-drag-object.d.ts +1 -1
  134. package/dist/configurator/scene/scene-entity/materials/RemoteReplacedMaterial.js +1 -1
  135. package/dist/configurator/scene/scene-entity/objects/SceneEntityObjectTextDecal.d.ts +1 -1
  136. package/dist/configurator/ui/assistant/AssistantComposer.d.ts +2 -1
  137. package/dist/configurator/ui/assistant/AssistantComposer.js +1 -1
  138. package/dist/configurator/ui/assistant/AssistantMarkdown.d.ts +1 -1
  139. package/dist/configurator/ui/assistant/AssistantMarkdown.js +1 -1
  140. package/dist/configurator/ui/assistant/AssistantThread.d.ts +6 -2
  141. package/dist/configurator/ui/assistant/AssistantThread.js +1 -1
  142. package/dist/configurator/ui/assistant/entity-link/AssistantEntityLink.d.ts +13 -0
  143. package/dist/configurator/ui/assistant/entity-link/AssistantEntityLink.js +1 -0
  144. package/dist/configurator/ui/assistant/entity-link/entity-link-selection.d.ts +22 -0
  145. package/dist/configurator/ui/assistant/entity-link/entity-link-selection.js +1 -0
  146. package/dist/configurator/ui/assistant/entity-link/entity-link-state.d.ts +27 -0
  147. package/dist/configurator/ui/assistant/entity-link/entity-link-state.js +1 -0
  148. package/dist/configurator/ui/assistant/entity-link/entity-link-target.d.ts +5 -0
  149. package/dist/configurator/ui/assistant/entity-link/entity-link-target.js +1 -0
  150. package/dist/configurator/ui/assistant/entity-link/index.d.ts +3 -0
  151. package/dist/configurator/ui/assistant/entity-link/index.js +1 -0
  152. package/dist/configurator/ui/assistant/thread-items.d.ts +13 -2
  153. package/dist/configurator/ui/assistant/thread-items.js +1 -1
  154. package/dist/configurator/ui/configurator-layout/sidebar-keys/index.d.ts +1 -0
  155. package/dist/configurator/ui/configurator-layout/sidebar-keys/index.js +1 -0
  156. package/dist/configurator/ui/configurator-layout/sidebar-keys/sidebar-keys.d.ts +11 -0
  157. package/dist/configurator/ui/configurator-layout/sidebar-keys/sidebar-keys.js +1 -0
  158. package/dist/configurator/ui/configurator-layout/slots/desktop-sidebar/DesktopSidebar.d.ts +101 -0
  159. package/dist/configurator/ui/configurator-layout/slots/desktop-sidebar/DesktopSidebar.js +16 -0
  160. package/dist/configurator/ui/configurator-layout/slots/desktop-sidebar/index.d.ts +1 -0
  161. package/dist/configurator/ui/configurator-layout/slots/desktop-sidebar/index.js +1 -0
  162. package/dist/configurator/ui/configurator-layout/slots/slots.d.ts +1 -0
  163. package/dist/configurator/ui/configurator-layout/slots/slots.js +1 -1
  164. package/dist/configurator/ui/configurator-layout/universal/DesktopLayout.d.ts +0 -74
  165. package/dist/configurator/ui/configurator-layout/universal/DesktopLayout.js +5 -20
  166. package/dist/configurator/ui/configurator-layout/universal/DesktopPreview.js +1 -1
  167. package/dist/configurator/ui/configurator-layout/universal/MobileLayout.js +4 -4
  168. package/dist/configurator/ui/configurator-layout/universal/MobilePreview.js +1 -1
  169. package/dist/configurator/ui/configurator-layout/universal/use-layout-scene-safe-area.d.ts +47 -0
  170. package/dist/configurator/ui/configurator-layout/universal/use-layout-scene-safe-area.js +1 -0
  171. package/dist/configurator/ui/configurator-layout/universal/use-scene-safe-area.d.ts +11 -26
  172. package/dist/configurator/ui/configurator-layout/universal/use-scene-safe-area.js +1 -1
  173. package/dist/configurator/ui/legacy/layout/steps/StepsNavigation.d.ts +2 -2
  174. package/dist/configurator/ui/phoenix-layout-elements/header/common/step-navigation/StepsNavigation.d.ts +2 -2
  175. package/dist/docs/complex-use-cases/filtered-controls-with-fix-dialog.mdx +16 -19
  176. package/dist/docs/complex-use-cases/sketching.mdx +0 -38
  177. package/dist/docs/controls/select-attribute/cardselect.mdx +9 -13
  178. package/dist/docs/dimensions/3d-scene-integration/dimension-indicators.mdx +2 -2
  179. package/dist/docs/dimensions/3d-scene-integration/editable-angle-indicator.mdx +1 -1
  180. package/dist/docs/dimensions/3d-scene-integration/editable-distance-dimension-indicator.mdx +1 -1
  181. package/dist/docs/dimensions/3d-scene-integration/list-selector-dimension-indicator.mdx +1 -1
  182. package/dist/docs/drag-and-drop/drag-handle.mdx +1 -1
  183. package/dist/docs/drag-and-drop/hotspot-handle.mdx +1 -1
  184. package/dist/docs/drag-and-drop/planes.mdx +1 -1
  185. package/dist/docs/drag-and-drop/rotatable.mdx +2 -2
  186. package/dist/docs/index.json +32 -1
  187. package/dist/docs/integrations/woocommerce/local-development.mdx +1 -1
  188. package/dist/docs/layouts/custom-layout.mdx +981 -0
  189. package/dist/docs/layouts/header/fixed.mdx +2 -2
  190. package/dist/docs/layouts/header/floating.mdx +2 -2
  191. package/dist/docs/layouts/sidebar/in-a-custom-layout.mdx +380 -0
  192. package/dist/docs/layouts/sidebar-footer/basic.mdx +32 -77
  193. package/dist/docs/other-features/client-side-rendering/declarative.mdx +1 -1
  194. package/dist/docs/other-features/side-effects.mdx +8 -11
  195. package/dist/docs/other-features/transformers.mdx +4 -0
  196. package/dist/docs/other-features/violation-messages.mdx +52 -56
  197. package/dist/docs/phoenix/configurator-interface.mdx +179 -80
  198. package/dist/docs/phoenix/deployments.mdx +1 -1
  199. package/dist/docs/phoenix/domain-model.mdx +4 -0
  200. package/dist/docs/phoenix/expression-context.mdx +11 -3
  201. package/dist/docs/phoenix/finalization.mdx +1 -1
  202. package/dist/docs/phoenix/getting-started.mdx +1 -1
  203. package/dist/docs/phoenix/phoenix-cli.mdx +48 -48
  204. package/dist/docs/phoenix/project-structure.mdx +18 -11
  205. package/dist/docs/phoenix/quickstart.mdx +2 -2
  206. package/dist/docs/phoenix/sdk-builder-workflow.mdx +8 -8
  207. package/dist/docs/phoenix/testing.mdx +140 -0
  208. package/dist/docs/phoenix/webhook-membership.mdx +10 -9
  209. package/dist/docs/phoenix/webhooks.mdx +2 -2
  210. package/dist/docs/ux-guidelines/choosing-a-control.mdx +11 -0
  211. package/dist/domain/admin-domain/__generated/enhanced-model.d.ts +1 -2
  212. package/dist/domain/admin-domain/implementation/common-admin-expressions.d.ts +26 -12
  213. package/dist/domain/admin-domain/implementation/common-admin-publish.d.ts +1 -2
  214. package/dist/domain/admin-domain/index.d.ts +8 -3
  215. package/dist/domain/admin-domain/index.js +1 -1
  216. package/dist/domain/application/GetApplicationWrapperHandler.d.ts +2 -2
  217. package/dist/domain/application/GetThemeHandler.d.ts +1 -1
  218. package/dist/domain/application/GetWebComponentOptions.d.ts +1 -1
  219. package/dist/domain/application/admin-page-factories.d.ts +1 -2
  220. package/dist/domain/application/application-config.d.ts +7 -26
  221. package/dist/domain/application/assistant/assistant-fields.d.ts +12 -0
  222. package/dist/domain/application/assistant/assistant-fields.js +1 -0
  223. package/dist/domain/application/assistant/assistant-manifest.d.ts +11 -1
  224. package/dist/domain/application/assistant/assistant-resolved-manifest.d.ts +38 -2
  225. package/dist/domain/application/assistant/assistant-resolved-manifest.js +1 -1
  226. package/dist/domain/application/assistant/assistant-value-type.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.d.ts +1 -11
  233. package/dist/domain/application/assistant/generate-assistant-prompt.js +1 -1
  234. package/dist/domain/application/assistant/index.d.ts +6 -1
  235. package/dist/domain/application/assistant/index.js +1 -1
  236. package/dist/domain/application/assistant/session-setup/AssistantSetupHandler.d.ts +20 -0
  237. package/dist/domain/application/assistant/session-setup/AssistantSetupHandler.js +1 -0
  238. package/dist/domain/application/assistant/session-setup/apply-assistant-setup.d.ts +10 -0
  239. package/dist/domain/application/assistant/session-setup/apply-assistant-setup.js +1 -0
  240. package/dist/domain/application/assistant/session-setup/assistant-setup-manifest.d.ts +48 -0
  241. package/dist/domain/application/assistant/session-setup/assistant-setup-manifest.js +1 -0
  242. package/dist/domain/application/assistant/session-setup/create-session-assistant.d.ts +15 -0
  243. package/dist/domain/application/assistant/session-setup/create-session-assistant.js +1 -0
  244. package/dist/domain/application/assistant/session-setup/index.d.ts +4 -0
  245. package/dist/domain/application/assistant/session-setup/index.js +1 -0
  246. package/dist/domain/application/assistant-mutations.d.ts +2 -1
  247. package/dist/domain/application/assistant-mutations.js +1 -1
  248. package/dist/domain/application/assistant-recipe-groups.d.ts +1 -1
  249. package/dist/domain/application/configurator-builder.d.ts +2 -2
  250. package/dist/domain/application/configurator-builder.js +1 -1
  251. package/dist/domain/application/create-initial-published-data.d.ts +6 -7
  252. package/dist/domain/application/index.d.ts +2 -6
  253. package/dist/domain/application/index.js +1 -1
  254. package/dist/domain/application/published-data/DataRowValidatorHandler.d.ts +1 -1
  255. package/dist/domain/application/published-data/FilterPublishedChunksHandler.d.ts +1 -1
  256. package/dist/domain/application/published-data/MapPublishedChunkedDataHandler.d.ts +1 -1
  257. package/dist/domain/application/published-data/MapPublishedRevisionDataHandler.d.ts +1 -1
  258. package/dist/domain/application/published-data/SheetValidatorHandler.d.ts +1 -1
  259. package/dist/domain/application/published-data/build-legend-data.d.ts +1 -1
  260. package/dist/domain/application/published-data/format-field-type.d.ts +1 -1
  261. package/dist/domain/application/published-data/map-data-to-sheet.d.ts +1 -1
  262. package/dist/domain/application/published-data/map-published-chunked-data.d.ts +3 -3
  263. package/dist/domain/application/published-data/map-published-data.d.ts +7 -3
  264. package/dist/domain/application/published-data/validate-sheet-data.d.ts +1 -1
  265. package/dist/domain/available-system-components.js +1 -1
  266. package/dist/domain/core/action/action-factory.d.ts +11 -0
  267. package/dist/domain/core/{action.d.ts → action/action.d.ts} +21 -16
  268. package/dist/domain/core/action/index.d.ts +2 -0
  269. package/dist/domain/core/action/index.js +1 -0
  270. package/dist/domain/core/component/domain-component-optic.d.ts +29 -40
  271. package/dist/domain/core/component/domain-component-optic.js +2 -2
  272. package/dist/domain/core/component/legacy-filter.d.ts +2 -17
  273. package/dist/domain/core/component/system-component-filter.d.ts +36 -18
  274. package/dist/domain/core/data-schema/data-cell-value.d.ts +4 -0
  275. package/dist/domain/core/data-schema/data-schema-array-field.d.ts +5 -0
  276. package/dist/domain/core/data-schema/data-schema-field-object.d.ts +4 -0
  277. package/dist/domain/core/data-schema/data-schema-field-object.js +1 -0
  278. package/dist/domain/core/data-schema/data-schema-field.d.ts +2 -0
  279. package/dist/domain/core/data-schema/data-schema-field.js +1 -0
  280. package/dist/domain/core/data-schema/data-schema-localized-field.d.ts +4 -0
  281. package/dist/domain/core/data-schema/data-schema-localized-field.js +1 -0
  282. package/dist/domain/core/data-schema/data-schema-primitive-field.d.ts +5 -0
  283. package/dist/domain/core/data-schema/data-schema-primitive-field.js +1 -0
  284. package/dist/domain/core/data-schema/data-schema.d.ts +2 -0
  285. package/dist/domain/core/data-schema/data-schema.js +1 -0
  286. package/dist/domain/core/data-schema/index.d.ts +7 -0
  287. package/dist/domain/core/data-schema/index.js +1 -0
  288. package/dist/domain/core/domain-factory.d.ts +1 -1
  289. package/dist/domain/core/domain.d.ts +2 -2
  290. package/dist/domain/core/emission/index.d.ts +8 -0
  291. package/dist/domain/core/emission/index.js +1 -0
  292. package/dist/domain/core/emission/reset-state-emission.d.ts +12 -0
  293. package/dist/domain/core/emission/reset-state-emission.js +1 -0
  294. package/dist/domain/core/emission/state-emission.d.ts +4 -0
  295. package/dist/domain/core/emission/state-emission.js +1 -0
  296. package/dist/domain/core/emission/state-update-emission.d.ts +14 -0
  297. package/dist/domain/core/emission/state-update-emission.js +1 -0
  298. package/dist/domain/core/emission/state-validation-result.d.ts +18 -0
  299. package/dist/domain/core/emission/state-validation-result.js +1 -0
  300. package/dist/domain/core/emission/transformation-log.d.ts +2 -0
  301. package/dist/domain/core/emission/transformation-log.js +1 -0
  302. package/dist/domain/core/emission/transformer-log-entry.d.ts +6 -0
  303. package/dist/domain/core/emission/transformer-log-entry.js +1 -0
  304. package/dist/domain/core/emission/transformer-log.d.ts +11 -0
  305. package/dist/domain/core/emission/transformer-log.js +1 -0
  306. package/dist/domain/core/emission/transformer-phase.d.ts +1 -0
  307. package/dist/domain/core/emission/transformer-phase.js +1 -0
  308. package/dist/domain/core/expression/aliased-expressions.d.ts +10 -0
  309. package/dist/domain/core/expression/aliased-expressions.js +1 -0
  310. package/dist/domain/core/expression/constant-expressions.d.ts +16 -8
  311. package/dist/domain/core/expression/constant-expressions.js +1 -1
  312. package/dist/domain/core/expression/custom-expression.d.ts +21 -8
  313. package/dist/domain/core/expression/custom-expression.js +1 -1
  314. package/dist/domain/core/expression/expression.d.ts +15 -17
  315. package/dist/domain/core/expression/index.d.ts +1 -2
  316. package/dist/domain/core/expression/index.js +1 -1
  317. package/dist/domain/core/index.d.ts +6 -1
  318. package/dist/domain/core/index.js +1 -1
  319. package/dist/domain/{invariants → core/invariant}/builtin-invariant.d.ts +2 -1
  320. package/dist/domain/core/invariant/custom-invariants.d.ts +13 -0
  321. package/dist/domain/core/invariant/custom-invariants.js +1 -0
  322. package/dist/domain/core/invariant/index.d.ts +5 -0
  323. package/dist/domain/core/invariant/index.js +1 -0
  324. package/dist/domain/core/invariant/invariants.d.ts +10 -0
  325. package/dist/domain/core/invariant/invariants.js +1 -0
  326. package/dist/domain/core/invariant/violation-component.js +1 -0
  327. package/dist/domain/{invariants → core/invariant}/violation.d.ts +52 -4
  328. package/dist/domain/core/invariant/violation.js +1 -0
  329. package/dist/domain/core/recipe/index.d.ts +1 -0
  330. package/dist/domain/core/recipe/index.js +1 -0
  331. package/dist/domain/core/recipe/recipes.d.ts +23 -0
  332. package/dist/domain/core/recipe/recipes.js +1 -0
  333. package/dist/domain/core/relation/all-of-type-relation.d.ts +19 -0
  334. package/dist/domain/core/relation/all-of-type-relation.js +1 -0
  335. package/dist/domain/{relations → core/relation}/component-factories.d.ts +1 -1
  336. package/dist/domain/core/relation/component-factories.js +1 -0
  337. package/dist/domain/{relations → core/relation}/composed-of.d.ts +1 -1
  338. package/dist/domain/core/relation/composed-of.js +1 -0
  339. package/dist/domain/core/relation/direct-relation.d.ts +17 -0
  340. package/dist/domain/core/relation/index.d.ts +8 -0
  341. package/dist/domain/core/relation/index.js +1 -0
  342. package/dist/domain/core/relation/indirect-relation.d.ts +25 -0
  343. package/dist/domain/core/relation/indirect-relation.js +1 -0
  344. package/dist/domain/{relations → core/relation}/reference-component.d.ts +4 -3
  345. package/dist/domain/core/relation/reference-component.js +1 -0
  346. package/dist/domain/{relations → core/relation}/reference-field.d.ts +1 -1
  347. package/dist/domain/core/relation/reference-field.js +1 -0
  348. package/dist/domain/core/relation/relation-factory.d.ts +22 -0
  349. package/dist/domain/core/relation/relation-factory.js +1 -0
  350. package/dist/domain/core/state/migrations.d.ts +14 -45
  351. package/dist/domain/core/state/migrations.js +1 -1
  352. package/dist/domain/core/state/state.d.ts +1 -1
  353. package/dist/domain/domain-builder.d.ts +2 -5
  354. package/dist/domain/domain-builder.js +1 -1
  355. package/dist/domain/domain-context/action-system/action-system.d.ts +2 -2
  356. package/dist/domain/domain-context/action-system/action-system.js +1 -1
  357. package/dist/domain/domain-context/action-system/index.d.ts +1 -0
  358. package/dist/domain/domain-context/action-system/index.js +1 -0
  359. package/dist/domain/domain-context/analytics-system/index.d.ts +2 -0
  360. package/dist/domain/domain-context/analytics-system/index.js +1 -0
  361. package/dist/domain/domain-context/create-transformer.d.ts +1 -1
  362. package/dist/domain/domain-context/dimension-system/dimension-system.d.ts +3 -4
  363. package/dist/domain/domain-context/dimension-system/dimension-system.js +1 -1
  364. package/dist/domain/domain-context/dimension-system/index.d.ts +1 -0
  365. package/dist/domain/domain-context/dimension-system/index.js +1 -0
  366. package/dist/domain/domain-context/domain-context-systems.d.ts +7 -7
  367. package/dist/domain/domain-context/index.d.ts +8 -18
  368. package/dist/domain/domain-context/index.js +1 -1
  369. package/dist/domain/domain-context/navigation-system/index.d.ts +3 -0
  370. package/dist/domain/domain-context/navigation-system/index.js +1 -0
  371. package/dist/domain/domain-context/navigation-system/navigation-system.d.ts +2 -3
  372. package/dist/domain/domain-context/navigation-system/navigation-system.js +1 -1
  373. package/dist/domain/domain-context/navigation-system/selection-transformers.d.ts +1 -1
  374. package/dist/domain/domain-context/recipe-system/index.d.ts +1 -0
  375. package/dist/domain/domain-context/recipe-system/index.js +1 -0
  376. package/dist/domain/domain-context/recipe-system/recipe-cooker-system.d.ts +2 -3
  377. package/dist/domain/domain-context/recipe-system/recipe-cooker-system.js +1 -1
  378. package/dist/domain/domain-context/relation-transformers/cascade-deletes.d.ts +2 -2
  379. package/dist/domain/domain-context/relation-transformers/cascade-ref-pruning.d.ts +2 -2
  380. package/dist/domain/domain-context/relation-transformers/cascade-ref-pruning.js +1 -1
  381. package/dist/domain/domain-context/relation-transformers/create-entity-refs.d.ts +2 -2
  382. package/dist/domain/domain-context/relation-transformers/create-entity-refs.js +2 -2
  383. package/dist/domain/domain-context/relation-transformers/index.d.ts +4 -0
  384. package/dist/domain/domain-context/relation-transformers/index.js +1 -0
  385. package/dist/domain/domain-context/relation-transformers/replace-refs.d.ts +2 -2
  386. package/dist/domain/domain-context/relation-transformers/replace-refs.js +1 -1
  387. package/dist/domain/domain-context/store-system/index.d.ts +4 -0
  388. package/dist/domain/domain-context/store-system/index.js +1 -0
  389. package/dist/domain/domain-context/store-system/reconcile-projected-entities.js +1 -1
  390. package/dist/domain/domain-context/store-system/store-system.d.ts +2 -36
  391. package/dist/domain/domain-context/store-system/store-system.js +2 -2
  392. package/dist/domain/domain-context/store-system/system-state.d.ts +1 -1
  393. package/dist/domain/domain-context/transformers/actions-builder.js +1 -1
  394. package/dist/domain/domain-context/transformers/auto-snap-transformer.d.ts +5 -7
  395. package/dist/domain/domain-context/transformers/auto-snap-transformer.js +1 -1
  396. package/dist/domain/domain-context/transformers/chain-builder.d.ts +1 -1
  397. package/dist/domain/domain-context/transformers/context.d.ts +2 -4
  398. package/dist/domain/domain-context/transformers/context.js +1 -1
  399. package/dist/domain/domain-context/transformers/entity-builder.d.ts +1 -2
  400. package/dist/domain/domain-context/transformers/entity-builder.js +1 -1
  401. package/dist/domain/domain-context/transformers/index.d.ts +1 -1
  402. package/dist/domain/domain-context/transformers/index.js +1 -1
  403. package/dist/domain/domain-context/transformers/then-builder.d.ts +1 -2
  404. package/dist/domain/domain-context/transformers/when-builder.d.ts +2 -3
  405. package/dist/domain/domain-context/transformers/when-builder.js +1 -1
  406. package/dist/domain/domain-context/undo-system.d.ts +2 -3
  407. package/dist/domain/domain-runtime/access/selectors.d.ts +9 -0
  408. package/dist/domain/domain-runtime/access/selectors.js +1 -1
  409. package/dist/domain/domain-runtime/access/types.d.ts +2 -0
  410. package/dist/domain/domain-runtime/access/types.js +1 -1
  411. package/dist/domain/domain-runtime/domain-context/action-context.d.ts +11 -0
  412. package/dist/domain/domain-runtime/domain-context/action-context.js +1 -0
  413. package/dist/domain/domain-runtime/domain-context/domain-context.js +1 -1
  414. package/dist/domain/domain-runtime/domain-context/expression-context.d.ts +8 -0
  415. package/dist/domain/domain-runtime/domain-context/expression-context.js +1 -0
  416. package/dist/domain/domain-runtime/domain-context/index.d.ts +3 -0
  417. package/dist/domain/domain-runtime/domain-context/runtime-expression-context.d.ts +18 -0
  418. package/dist/domain/domain-runtime/domain-context/runtime-expression-context.js +1 -0
  419. package/dist/domain/domain-runtime/domain-context/selectors.d.ts +19 -23
  420. package/dist/domain/domain-runtime/domain-context/selectors.js +1 -1
  421. package/dist/domain/domain-runtime/domain-context/types.d.ts +4 -1
  422. package/dist/domain/domain-runtime/domain-runtime.d.ts +84 -68
  423. package/dist/domain/domain-runtime/errors/implementation-error-collector.d.ts +19 -0
  424. package/dist/domain/domain-runtime/errors/implementation-error-collector.js +1 -0
  425. package/dist/domain/domain-runtime/errors/implementation-error.d.ts +46 -0
  426. package/dist/domain/domain-runtime/errors/implementation-error.js +1 -0
  427. package/dist/domain/domain-runtime/errors/implementation-errors.d.ts +13 -0
  428. package/dist/domain/domain-runtime/errors/implementation-errors.js +1 -0
  429. package/dist/domain/domain-runtime/errors/index.d.ts +4 -0
  430. package/dist/domain/domain-runtime/errors/index.js +1 -0
  431. package/dist/domain/domain-runtime/errors/to-implementation-errors.d.ts +10 -0
  432. package/dist/domain/domain-runtime/errors/to-implementation-errors.js +1 -0
  433. package/dist/domain/domain-runtime/index.d.ts +1 -0
  434. package/dist/domain/domain-runtime/index.js +1 -1
  435. package/dist/domain/domain-runtime/spec/create-violation-expressions.d.ts +24 -0
  436. package/dist/domain/domain-runtime/spec/create-violation-expressions.js +1 -0
  437. package/dist/domain/domain-runtime/spec/index.d.ts +5 -0
  438. package/dist/domain/domain-runtime/spec/index.js +1 -1
  439. package/dist/domain/domain-runtime/spec/initialize.d.ts +11 -0
  440. package/dist/domain/domain-runtime/spec/initialize.js +1 -1
  441. package/dist/domain/{core/expression → domain-runtime/spec}/memoize-expression.d.ts +1 -2
  442. package/dist/domain/{application → domain-runtime/spec/module-checks}/element-registration.d.ts +2 -2
  443. package/dist/domain/domain-runtime/spec/module-checks/element-registration.js +1 -0
  444. package/dist/domain/{application → domain-runtime/spec/module-checks}/handler-registration.d.ts +1 -1
  445. package/dist/domain/domain-runtime/spec/module-checks/handler-registration.js +1 -0
  446. package/dist/domain/domain-runtime/spec/module-checks/index.d.ts +8 -0
  447. package/dist/domain/domain-runtime/spec/module-checks/index.js +1 -0
  448. package/dist/domain/{project-modules → domain-runtime/spec/module-checks}/project-modules.d.ts +8 -17
  449. package/dist/domain/domain-runtime/spec/module-checks/project-modules.js +1 -0
  450. package/dist/domain/domain-runtime/spec/module-checks/resolve-action-modules.d.ts +4 -0
  451. package/dist/domain/domain-runtime/spec/module-checks/resolve-action-modules.js +1 -0
  452. package/dist/domain/domain-runtime/spec/module-checks/resolve-component-optic-modules.d.ts +4 -0
  453. package/dist/domain/domain-runtime/spec/module-checks/resolve-component-optic-modules.js +1 -0
  454. package/dist/domain/domain-runtime/spec/module-checks/resolve-expression-modules.d.ts +15 -0
  455. package/dist/domain/domain-runtime/spec/module-checks/resolve-expression-modules.js +1 -0
  456. package/dist/domain/domain-runtime/spec/module-checks/resolve-imported-transformers.d.ts +22 -0
  457. package/dist/domain/domain-runtime/spec/module-checks/resolve-imported-transformers.js +1 -0
  458. package/dist/domain/domain-runtime/spec/module-checks/resolve-invariant-modules.d.ts +6 -0
  459. package/dist/domain/domain-runtime/spec/module-checks/resolve-invariant-modules.js +1 -0
  460. package/dist/domain/{actions → domain-runtime/spec}/prepare-action-implementations.d.ts +1 -1
  461. package/dist/domain/domain-runtime/spec/prepare-action-implementations.js +5 -0
  462. package/dist/domain/{core/expression → domain-runtime/spec}/prepare-domain-expressions.d.ts +1 -1
  463. package/dist/domain/domain-runtime/spec/selectors.d.ts +5 -6
  464. package/dist/domain/domain-runtime/spec/selectors.js +1 -1
  465. package/dist/domain/domain-runtime/spec/types.d.ts +3 -2
  466. package/dist/domain/{system-components → extensions}/canvas-config.d.ts +1 -1
  467. package/dist/domain/{system-components → extensions}/child-entity-recipe-hierarchy.d.ts +1 -1
  468. package/dist/domain/extensions/child-entity-recipe-hierarchy.js +1 -0
  469. package/dist/domain/{system-components → extensions}/client-side-image.d.ts +2 -2
  470. package/dist/domain/{system-components → extensions}/client-side-image.js +1 -1
  471. package/dist/domain/{system-components → extensions}/common/angle-indicator-schema.d.ts +3 -3
  472. package/dist/domain/extensions/common/angle-indicator-schema.js +1 -0
  473. package/dist/domain/{system-components → extensions}/common/dimension-indicator-schema.d.ts +2 -2
  474. package/dist/domain/extensions/common/index.d.ts +4 -0
  475. package/dist/domain/extensions/common/index.js +1 -0
  476. package/dist/domain/{system-components → extensions}/custom-header.d.ts +1 -1
  477. package/dist/domain/extensions/custom-header.js +1 -0
  478. package/dist/domain/{system-components → extensions}/custom-price-footer.js +1 -1
  479. package/dist/domain/{system-components → extensions}/custom-sidebar-footer.d.ts +1 -1
  480. package/dist/domain/extensions/custom-sidebar-footer.js +1 -0
  481. package/dist/domain/{system-components → extensions}/editable-angle-indicator.d.ts +3 -2
  482. package/dist/domain/extensions/editable-angle-indicator.js +1 -0
  483. package/dist/domain/{system-components → extensions}/editable-distance-dimension-indicator.d.ts +3 -2
  484. package/dist/domain/extensions/editable-distance-dimension-indicator.js +1 -0
  485. package/dist/domain/{system-components → extensions}/editable-offset-indicator.d.ts +3 -2
  486. package/dist/domain/extensions/editable-offset-indicator.js +1 -0
  487. package/dist/domain/{system-components → extensions}/editable-size-indicator.d.ts +2 -1
  488. package/dist/domain/extensions/editable-size-indicator.js +1 -0
  489. package/dist/domain/{system-components → extensions}/entity-header.d.ts +1 -1
  490. package/dist/domain/extensions/entity-header.js +1 -0
  491. package/dist/domain/{system-components → extensions}/finalize-component.js +1 -1
  492. package/dist/domain/{system-components → extensions}/horizontal-tabs.d.ts +2 -2
  493. package/dist/domain/extensions/index.d.ts +69 -0
  494. package/dist/domain/extensions/index.js +1 -0
  495. package/dist/domain/{system-components → extensions}/list-selector-dimension-indicator.d.ts +3 -2
  496. package/dist/domain/extensions/list-selector-dimension-indicator.js +1 -0
  497. package/dist/domain/{system-components → extensions}/navigation-steps.d.ts +2 -2
  498. package/dist/domain/extensions/offset-indicator.js +1 -0
  499. package/dist/domain/{system-components → extensions}/property-page.d.ts +1 -1
  500. package/dist/domain/extensions/property-page.js +1 -0
  501. package/dist/domain/{system-components → extensions}/replace-entity-recipe-hierarchy.d.ts +1 -1
  502. package/dist/domain/extensions/replace-entity-recipe-hierarchy.js +1 -0
  503. package/dist/domain/{system-components → extensions}/rotation-handle.d.ts +2 -2
  504. package/dist/domain/{system-components → extensions}/save-template-thumbnail.d.ts +2 -2
  505. package/dist/domain/{system-components → extensions}/save-template-thumbnail.js +1 -1
  506. package/dist/domain/{system-components → extensions}/scene-entity-add-fab.d.ts +1 -1
  507. package/dist/domain/extensions/scene-entity-add-fab.js +1 -0
  508. package/dist/domain/{system-components → extensions}/scene-entity-delete-fab.d.ts +1 -1
  509. package/dist/domain/extensions/scene-entity-delete-fab.js +1 -0
  510. package/dist/domain/{system-components → extensions}/scene-entity-html-hotspot.d.ts +1 -1
  511. package/dist/domain/extensions/scene-entity-html-hotspot.js +1 -0
  512. package/dist/domain/{system-components → extensions}/scene-entity-navigation-hotspot.d.ts +1 -1
  513. package/dist/domain/extensions/scene-entity-navigation-hotspot.js +1 -0
  514. package/dist/domain/{system-components → extensions}/scene-entity-object-html-hotspot.d.ts +1 -1
  515. package/dist/domain/extensions/scene-entity-object-html-hotspot.js +1 -0
  516. package/dist/domain/{system-components → extensions}/scene-entity-select-hotspot.d.ts +1 -1
  517. package/dist/domain/extensions/scene-entity-select-hotspot.js +1 -0
  518. package/dist/domain/{system-components → extensions}/sketching-edit.d.ts +1 -1
  519. package/dist/domain/extensions/sketching-edit.js +1 -0
  520. package/dist/domain/{system-components → extensions}/summary-component.js +1 -1
  521. package/dist/domain/{system-components → extensions}/tool-menu-fab.d.ts +1 -1
  522. package/dist/domain/extensions/tool-menu-fab.js +1 -0
  523. package/dist/domain/{system-components → extensions}/toolbar.d.ts +1 -1
  524. package/dist/domain/extensions/toolbar.js +1 -0
  525. package/dist/domain/index.d.ts +2 -14
  526. package/dist/domain/index.js +1 -1
  527. package/dist/domain/mocks/create-mock-domain-context.d.ts +1 -1
  528. package/dist/domain/mocks/create-mock-domain-runtime-services.d.ts +1 -1
  529. package/dist/domain/mocks/create-mock-domain-runtime.d.ts +28 -19
  530. package/dist/domain/mocks/create-mock-domain-runtime.js +1 -1
  531. package/dist/domain/mocks/create-mock-domain.d.ts +1 -1
  532. package/dist/domain/mocks/create-mock-domain.js +1 -1
  533. package/dist/domain/mocks/create-mock-state.d.ts +2 -2
  534. package/dist/domain/mocks/create-test-application-config.d.ts +59 -0
  535. package/dist/domain/mocks/create-test-application-config.js +1 -0
  536. package/dist/domain/mocks/index.d.ts +1 -0
  537. package/dist/domain/mocks/index.js +1 -1
  538. package/dist/domain/projections/blender-projections/blender-projections.d.ts +1 -2
  539. package/dist/domain/projections/blender-projections/camera.d.ts +2 -2
  540. package/dist/domain/projections/collision-projections.d.ts +1 -1
  541. package/dist/domain/projections/composition-projections.d.ts +1 -1
  542. package/dist/domain/projections/composition-projections.js +1 -1
  543. package/dist/domain/projections/constraint-projections.d.ts +1 -1
  544. package/dist/domain/projections/index.d.ts +1 -1
  545. package/dist/domain/projections/position-projections.d.ts +1 -1
  546. package/dist/domain/projections/projected-entities-projections.d.ts +1 -1
  547. package/dist/domain/projections/snapping-projections.d.ts +1 -1
  548. package/dist/domain/projections/validation-projections.d.ts +3 -20
  549. package/dist/domain/projections/validation-projections.js +1 -1
  550. package/dist/domain/sketching/sketching-projections.d.ts +1 -1
  551. package/dist/domain/system-components/application-config.d.ts +2 -2
  552. package/dist/domain/system-components/child-entity-selection.d.ts +1 -2
  553. package/dist/domain/system-components/collision-box-geometry.d.ts +4 -2
  554. package/dist/domain/system-components/collision-geometry.d.ts +4 -2
  555. package/dist/domain/system-components/collision-point-geometry.d.ts +4 -2
  556. package/dist/domain/system-components/common/index.d.ts +0 -4
  557. package/dist/domain/system-components/common/index.js +1 -1
  558. package/dist/domain/system-components/common/material-override-schema.d.ts +2 -2
  559. package/dist/domain/system-components/common/recipes.d.ts +1 -2
  560. package/dist/domain/system-components/constraint.d.ts +10 -23
  561. package/dist/domain/system-components/drag-handle.d.ts +1 -1
  562. package/dist/domain/system-components/hotspot-drag-handle.d.ts +1 -1
  563. package/dist/domain/system-components/index.d.ts +0 -68
  564. package/dist/domain/system-components/index.js +1 -1
  565. package/dist/domain/system-components/material-swatch.js +1 -1
  566. package/dist/domain/system-components/phoenix-entity-elements/admin-data-table-sidebar.d.ts +1 -1
  567. package/dist/domain/system-components/phoenix-layout-elements/admin-connected-resource-page.d.ts +1 -1
  568. package/dist/domain/system-components/phoenix-layout-elements/admin-data-table-actions.d.ts +1 -1
  569. package/dist/domain/system-components/phoenix-layout-elements/admin-data-table-page.d.ts +1 -1
  570. package/dist/domain/system-components/scene-entity-material-override.d.ts +1 -1
  571. package/dist/domain/system-components/scene-entity-object-material-override.d.ts +1 -1
  572. package/dist/domain/system-components/scene-entity-object-text-decal.d.ts +1 -1
  573. package/dist/domain/system-components/scene-entity-object-transimissive-material-override.d.ts +1 -1
  574. package/dist/domain/system-components/scene-entity-transimissive-material-override.d.ts +1 -1
  575. package/dist/domain/utils/eval-cache.d.ts +1 -1
  576. package/dist/domain/utils/map-nested-object.d.ts +1 -1
  577. package/dist/domain/utils/memo-eval.d.ts +2 -2
  578. package/dist/editor/domain-editors/use-implementation-files.d.ts +1 -2
  579. package/dist/editor/mocks/EditorMockContext.js +1 -1
  580. package/dist/i18n/locales/cs/messages.js +1 -1
  581. package/dist/i18n/locales/da/messages.js +1 -1
  582. package/dist/i18n/locales/de/messages.js +1 -1
  583. package/dist/i18n/locales/de-AT/messages.js +1 -1
  584. package/dist/i18n/locales/en/messages.js +1 -1
  585. package/dist/i18n/locales/en-AU/messages.js +1 -1
  586. package/dist/i18n/locales/en-GB/messages.js +1 -1
  587. package/dist/i18n/locales/es/messages.js +1 -1
  588. package/dist/i18n/locales/fr/messages.js +1 -1
  589. package/dist/i18n/locales/hu/messages.js +1 -1
  590. package/dist/i18n/locales/it/messages.js +1 -1
  591. package/dist/i18n/locales/nl/messages.js +1 -1
  592. package/dist/i18n/locales/pl/messages.js +1 -1
  593. package/dist/i18n/locales/pt/messages.js +1 -1
  594. package/dist/i18n/locales/ro/messages.js +1 -1
  595. package/dist/i18n/locales/sk/messages.js +1 -1
  596. package/dist/i18n/locales/tr/messages.js +1 -1
  597. package/dist/legacy/domain-cli/gen/configurator-builder.js +13 -12
  598. package/dist/legacy/domain-cli/gen/constant-expressions.js +1 -3
  599. package/dist/legacy/domain-cli/gen/defaults.js +1 -7
  600. package/dist/legacy/domain-cli/gen/implementation.js +7 -11
  601. package/dist/legacy/domain-cli/gen/invariants.js +7 -6
  602. package/dist/legacy/domain-cli/gen/relations.js +1 -1
  603. package/dist/legacy/domain-cli/utils/cache.d.ts +1 -1
  604. package/dist/legacy/domain-cli/utils/cache.js +1 -1
  605. package/dist/legacy/domain-spec/__generated/domain-schema.d.ts +16 -5
  606. package/dist/legacy/phoenix-cli/project-gen/generators/file-templates/agents/claude-md.d.ts +1 -1
  607. package/dist/legacy/phoenix-cli/project-gen/generators/file-templates/agents/cursor-rules.d.ts +1 -1
  608. package/dist/legacy/phoenix-cli/project-gen/generators/file-templates/agents/shared-sdk-content.d.ts +1 -1
  609. package/dist/legacy/phoenix-cli/project-gen/generators/file-templates/agents/shared-sdk-content.js +2 -0
  610. package/dist/legacy/phoenix-cli/project-gen/generators/file-templates/domain-index.js +17 -15
  611. package/dist/legacy/phoenix-cli/project-gen/generators/file-templates/env-example.d.ts +1 -1
  612. package/dist/legacy/phoenix-cli/project-gen/generators/file-templates/env-example.js +4 -0
  613. package/dist/phoenix/application-spec/application-spec-builder.js +1 -1
  614. package/dist/phoenix/commands/deploy.js +1 -1
  615. package/dist/phoenix/commands/init.d.ts +4 -4
  616. package/dist/phoenix/commands/init.js +1 -1
  617. package/dist/phoenix/commands/prettier.js +1 -1
  618. package/dist/phoenix/scripts/build-admin.js +1 -1
  619. package/dist/phoenix/services/source-archive.d.ts +1 -0
  620. package/dist/phoenix/services/source-archive.js +1 -1
  621. package/dist/phoenix/utils/git/index.d.ts +1 -0
  622. package/dist/phoenix/utils/git/index.js +1 -0
  623. package/dist/phoenix/utils/git/is-inside-git-repository.d.ts +6 -0
  624. package/dist/phoenix/utils/git/is-inside-git-repository.js +1 -0
  625. package/dist/phoenix/utils/index.d.ts +1 -0
  626. package/dist/phoenix/utils/index.js +1 -1
  627. package/dist/react-sdk/application-runtime/hooks/use-access-service.d.ts +2 -0
  628. package/dist/react-sdk/application-runtime/mocks/create-mock-application-runtime.js +1 -1
  629. package/dist/react-sdk/application-runtime/routing/access-service.d.ts +1 -0
  630. package/dist/react-sdk/application-runtime/runtime/create-application-runtime.d.ts +53 -36
  631. package/dist/react-sdk/application-runtime/runtime/create-application-runtime.js +1 -1
  632. package/dist/react-sdk/domain-context/common-hooks/use-domain-context.d.ts +9 -9
  633. package/dist/react-sdk/domain-context/index.d.ts +1 -1
  634. package/dist/react-sdk/domain-context/index.js +1 -1
  635. package/dist/react-sdk/domain-context/system-hooks/navigation-hooks.d.ts +6 -0
  636. package/dist/react-sdk/domain-context/system-hooks/navigation-hooks.js +1 -1
  637. package/dist/react-sdk/domain-controls/hooks/use-angle-dimension.d.ts +1 -1
  638. package/dist/ui-sdk/theme/types.d.ts +1 -1
  639. package/dist/webhook/builders/common.d.ts +5 -0
  640. package/dist/webhook/builders/webhook-builder.js +1 -1
  641. package/package.json +3 -3
  642. package/schema/domain-spec.json +209 -16
  643. package/dist/application-spec/generate-application/code/templates/env-ci.d.ts +0 -1
  644. package/dist/application-spec/generate-application/code/templates/env-ci.js +0 -25
  645. package/dist/application-spec/generate-application/code/templates/env-example.d.ts +0 -1
  646. package/dist/application-spec/generate-application/code/templates/env-example.js +0 -90
  647. package/dist/application-spec/generate-application/code/templates/prettier-ignore.d.ts +0 -1
  648. package/dist/application-spec/generate-application/code/templates/prettier-ignore.js +0 -6
  649. package/dist/application-spec/generate-application/code/templates/private-assets-readme.d.ts +0 -1
  650. package/dist/application-spec/generate-application/code/templates/private-assets-readme.js +0 -24
  651. package/dist/application-spec/generate-application/code/templates/public-assets-readme.d.ts +0 -1
  652. package/dist/application-spec/generate-application/code/templates/public-assets-readme.js +0 -24
  653. package/dist/application-spec/generate-application/code/templates/readme.d.ts +0 -1
  654. package/dist/application-spec/generate-application/code/templates/readme.js +0 -23
  655. package/dist/application-spec/generate-application/code/templates/skills/agents-md.d.ts +0 -1
  656. package/dist/application-spec/generate-application/code/templates/skills/agents-md.js +0 -2
  657. package/dist/domain/actions/action-factory.d.ts +0 -10
  658. package/dist/domain/actions/prepare-action-implementations.js +0 -5
  659. package/dist/domain/application/element-registration.js +0 -1
  660. package/dist/domain/application/handler-registration.js +0 -1
  661. package/dist/domain/application/resolve-imported-transformers.d.ts +0 -23
  662. package/dist/domain/application/resolve-imported-transformers.js +0 -1
  663. package/dist/domain/application/resource-builder.d.ts +0 -13
  664. package/dist/domain/application/resource-builder.js +0 -1
  665. package/dist/domain/domain-context/recipe-system/recipes.d.ts +0 -55
  666. package/dist/domain/domain-context/recipe-system/recipes.js +0 -1
  667. package/dist/domain/invariants/custom-invariants.d.ts +0 -20
  668. package/dist/domain/invariants/custom-invariants.js +0 -1
  669. package/dist/domain/invariants/invariants.d.ts +0 -74
  670. package/dist/domain/invariants/invariants.js +0 -1
  671. package/dist/domain/invariants/violation-component.js +0 -1
  672. package/dist/domain/invariants/violation.js +0 -1
  673. package/dist/domain/project-modules/index.d.ts +0 -1
  674. package/dist/domain/project-modules/index.js +0 -1
  675. package/dist/domain/project-modules/project-modules.js +0 -1
  676. package/dist/domain/relations/all-of-type-relation.d.ts +0 -30
  677. package/dist/domain/relations/all-of-type-relation.js +0 -1
  678. package/dist/domain/relations/component-factories.js +0 -1
  679. package/dist/domain/relations/composed-of.js +0 -1
  680. package/dist/domain/relations/direct-relation.d.ts +0 -27
  681. package/dist/domain/relations/indirect-relation.d.ts +0 -78
  682. package/dist/domain/relations/indirect-relation.js +0 -1
  683. package/dist/domain/relations/reference-component.js +0 -1
  684. package/dist/domain/relations/relation-factory.d.ts +0 -17
  685. package/dist/domain/relations/relation-factory.js +0 -1
  686. package/dist/domain/relations/relation-implementation.d.ts +0 -5
  687. package/dist/domain/system-components/child-entity-recipe-hierarchy.js +0 -1
  688. package/dist/domain/system-components/common/angle-indicator-schema.js +0 -1
  689. package/dist/domain/system-components/custom-header.js +0 -1
  690. package/dist/domain/system-components/custom-sidebar-footer.js +0 -1
  691. package/dist/domain/system-components/editable-angle-indicator.js +0 -1
  692. package/dist/domain/system-components/editable-distance-dimension-indicator.js +0 -1
  693. package/dist/domain/system-components/editable-offset-indicator.js +0 -1
  694. package/dist/domain/system-components/editable-size-indicator.js +0 -1
  695. package/dist/domain/system-components/entity-header.js +0 -1
  696. package/dist/domain/system-components/list-selector-dimension-indicator.js +0 -1
  697. package/dist/domain/system-components/offset-indicator.js +0 -1
  698. package/dist/domain/system-components/property-page.js +0 -1
  699. package/dist/domain/system-components/replace-entity-recipe-hierarchy.js +0 -1
  700. package/dist/domain/system-components/scene-entity-add-fab.js +0 -1
  701. package/dist/domain/system-components/scene-entity-delete-fab.js +0 -1
  702. package/dist/domain/system-components/scene-entity-html-hotspot.js +0 -1
  703. package/dist/domain/system-components/scene-entity-navigation-hotspot.js +0 -1
  704. package/dist/domain/system-components/scene-entity-object-html-hotspot.js +0 -1
  705. package/dist/domain/system-components/scene-entity-select-hotspot.js +0 -1
  706. package/dist/domain/system-components/sketching-edit.js +0 -1
  707. package/dist/domain/system-components/tool-menu-fab.js +0 -1
  708. package/dist/domain/system-components/toolbar.js +0 -1
  709. /package/dist/application-spec/{core → enhanced-json}/eval-code-uses-self.d.ts +0 -0
  710. /package/dist/application-spec/{core → enhanced-json}/eval-code-uses-self.js +0 -0
  711. /package/dist/application-spec/{core → enhanced-json}/eval-to-constant.js +0 -0
  712. /package/dist/domain/{actions → core/action}/action-factory.js +0 -0
  713. /package/dist/domain/core/{action.js → action/action.js} +0 -0
  714. /package/dist/domain/{relations/reference-field.js → core/data-schema/data-cell-value.js} +0 -0
  715. /package/dist/domain/{relations/relation-implementation.js → core/data-schema/data-schema-array-field.js} +0 -0
  716. /package/dist/domain/{invariants → core/invariant}/builtin-invariant.js +0 -0
  717. /package/dist/domain/{invariants → core/invariant}/violation-component.d.ts +0 -0
  718. /package/dist/domain/{relations → core/relation}/direct-relation.js +0 -0
  719. /package/dist/domain/{core/expression → domain-runtime/spec}/memoize-expression.js +0 -0
  720. /package/dist/domain/{core/expression → domain-runtime/spec}/prepare-domain-expressions.js +0 -0
  721. /package/dist/domain/{system-components → extensions}/angle-indicator.d.ts +0 -0
  722. /package/dist/domain/{system-components → extensions}/angle-indicator.js +0 -0
  723. /package/dist/domain/{system-components → extensions}/attribute-switch.d.ts +0 -0
  724. /package/dist/domain/{system-components → extensions}/attribute-switch.js +0 -0
  725. /package/dist/domain/{system-components → extensions}/autorotate-camera-component.d.ts +0 -0
  726. /package/dist/domain/{system-components → extensions}/autorotate-camera-component.js +0 -0
  727. /package/dist/domain/{system-components → extensions}/basic-sidebar-footer.d.ts +0 -0
  728. /package/dist/domain/{system-components → extensions}/basic-sidebar-footer.js +0 -0
  729. /package/dist/domain/{system-components → extensions}/camera-based-hidden-entity-object.d.ts +0 -0
  730. /package/dist/domain/{system-components → extensions}/camera-based-hidden-entity-object.js +0 -0
  731. /package/dist/domain/{system-components → extensions}/camera-based-hidden-entity.d.ts +0 -0
  732. /package/dist/domain/{system-components → extensions}/camera-based-hidden-entity.js +0 -0
  733. /package/dist/domain/{system-components → extensions}/canvas-config.js +0 -0
  734. /package/dist/domain/{system-components → extensions}/canvas-custom-environment.d.ts +0 -0
  735. /package/dist/domain/{system-components → extensions}/canvas-custom-environment.js +0 -0
  736. /package/dist/domain/{system-components → extensions}/canvas-padding.d.ts +0 -0
  737. /package/dist/domain/{system-components → extensions}/canvas-padding.js +0 -0
  738. /package/dist/domain/{system-components → extensions}/canvas-preset-environment.d.ts +0 -0
  739. /package/dist/domain/{system-components → extensions}/canvas-preset-environment.js +0 -0
  740. /package/dist/domain/{system-components → extensions}/color-value.d.ts +0 -0
  741. /package/dist/domain/{system-components → extensions}/color-value.js +0 -0
  742. /package/dist/domain/{system-components → extensions}/common/dimension-indicator-schema.js +0 -0
  743. /package/dist/domain/{system-components → extensions}/common/dimension-indicators.d.ts +0 -0
  744. /package/dist/domain/{system-components → extensions}/common/dimension-indicators.js +0 -0
  745. /package/dist/domain/{system-components → extensions}/common/editable-indicator-button-variant.d.ts +0 -0
  746. /package/dist/domain/{system-components → extensions}/common/editable-indicator-button-variant.js +0 -0
  747. /package/dist/domain/{system-components → extensions}/custom-price-footer.d.ts +0 -0
  748. /package/dist/domain/{system-components → extensions}/dimension-indicator.d.ts +0 -0
  749. /package/dist/domain/{system-components → extensions}/dimension-indicator.js +0 -0
  750. /package/dist/domain/{system-components → extensions}/exit-tool-mode-fab.d.ts +0 -0
  751. /package/dist/domain/{system-components → extensions}/exit-tool-mode-fab.js +0 -0
  752. /package/dist/domain/{system-components → extensions}/finalize-action.d.ts +0 -0
  753. /package/dist/domain/{system-components → extensions}/finalize-action.js +0 -0
  754. /package/dist/domain/{system-components → extensions}/finalize-component.d.ts +0 -0
  755. /package/dist/domain/{system-components → extensions}/fit-selection-orthographic-camera-component.d.ts +0 -0
  756. /package/dist/domain/{system-components → extensions}/fit-selection-orthographic-camera-component.js +0 -0
  757. /package/dist/domain/{system-components → extensions}/fit-selection-perspective-camera-component.d.ts +0 -0
  758. /package/dist/domain/{system-components → extensions}/fit-selection-perspective-camera-component.js +0 -0
  759. /package/dist/domain/{system-components → extensions}/fixed-header.d.ts +0 -0
  760. /package/dist/domain/{system-components → extensions}/fixed-header.js +0 -0
  761. /package/dist/domain/{system-components → extensions}/floating-header.d.ts +0 -0
  762. /package/dist/domain/{system-components → extensions}/floating-header.js +0 -0
  763. /package/dist/domain/{system-components → extensions}/hidden-header.d.ts +0 -0
  764. /package/dist/domain/{system-components → extensions}/hidden-header.js +0 -0
  765. /package/dist/domain/{system-components → extensions}/hidden-sidebar-footer.d.ts +0 -0
  766. /package/dist/domain/{system-components → extensions}/hidden-sidebar-footer.js +0 -0
  767. /package/dist/domain/{system-components → extensions}/horizontal-tabs.js +0 -0
  768. /package/dist/domain/{system-components → extensions}/multilingual-text-value.d.ts +0 -0
  769. /package/dist/domain/{system-components → extensions}/multilingual-text-value.js +0 -0
  770. /package/dist/domain/{system-components → extensions}/navigation-steps.js +0 -0
  771. /package/dist/domain/{system-components → extensions}/offset-anchors.d.ts +0 -0
  772. /package/dist/domain/{system-components → extensions}/offset-anchors.js +0 -0
  773. /package/dist/domain/{system-components → extensions}/offset-indicator.d.ts +0 -0
  774. /package/dist/domain/{system-components → extensions}/offset.d.ts +0 -0
  775. /package/dist/domain/{system-components → extensions}/offset.js +0 -0
  776. /package/dist/domain/{system-components → extensions}/other-action.d.ts +0 -0
  777. /package/dist/domain/{system-components → extensions}/other-action.js +0 -0
  778. /package/dist/domain/{system-components → extensions}/read-sidebar-footer.d.ts +0 -0
  779. /package/dist/domain/{system-components → extensions}/read-sidebar-footer.js +0 -0
  780. /package/dist/domain/{system-components → extensions}/rotatable.d.ts +0 -0
  781. /package/dist/domain/{system-components → extensions}/rotatable.js +0 -0
  782. /package/dist/domain/{system-components → extensions}/rotation-handle.js +0 -0
  783. /package/dist/domain/{system-components → extensions}/scene-entity-animation.d.ts +0 -0
  784. /package/dist/domain/{system-components → extensions}/scene-entity-animation.js +0 -0
  785. /package/dist/domain/{system-components → extensions}/scene-entity-control.d.ts +0 -0
  786. /package/dist/domain/{system-components → extensions}/scene-entity-control.js +0 -0
  787. /package/dist/domain/{system-components → extensions}/scene-entity-floor-object.d.ts +0 -0
  788. /package/dist/domain/{system-components → extensions}/scene-entity-floor-object.js +0 -0
  789. /package/dist/domain/{system-components → extensions}/scene-entity-wall-object.d.ts +0 -0
  790. /package/dist/domain/{system-components → extensions}/scene-entity-wall-object.js +0 -0
  791. /package/dist/domain/{system-components → extensions}/selectable-component.d.ts +0 -0
  792. /package/dist/domain/{system-components → extensions}/selectable-component.js +0 -0
  793. /package/dist/domain/{system-components → extensions}/sidebar-tabs.d.ts +0 -0
  794. /package/dist/domain/{system-components → extensions}/sidebar-tabs.js +0 -0
  795. /package/dist/domain/{system-components → extensions}/simple-summary.d.ts +0 -0
  796. /package/dist/domain/{system-components → extensions}/simple-summary.js +0 -0
  797. /package/dist/domain/{system-components → extensions}/size.d.ts +0 -0
  798. /package/dist/domain/{system-components → extensions}/size.js +0 -0
  799. /package/dist/domain/{system-components → extensions}/sketching-draw.d.ts +0 -0
  800. /package/dist/domain/{system-components → extensions}/sketching-draw.js +0 -0
  801. /package/dist/domain/{system-components → extensions}/summary-component.d.ts +0 -0
  802. /package/dist/domain/{system-components → extensions}/text-value.d.ts +0 -0
  803. /package/dist/domain/{system-components → extensions}/text-value.js +0 -0
  804. /package/dist/domain/{system-components → extensions}/tool-controls.d.ts +0 -0
  805. /package/dist/domain/{system-components → extensions}/tool-controls.js +0 -0
  806. /package/dist/domain/{system-components → extensions}/universal-sidebar-footer.d.ts +0 -0
  807. /package/dist/domain/{system-components → extensions}/universal-sidebar-footer.js +0 -0
  808. /package/dist/domain/{system-components → extensions}/view-controls.d.ts +0 -0
  809. /package/dist/domain/{system-components → extensions}/view-controls.js +0 -0
@@ -29,10 +29,11 @@ pnpm phoenix dev
29
29
 
30
30
  1. Refuses to run when a `spec/` folder already exists, so it never touches an existing project.
31
31
  2. Writes a `package.json` that depends on the CLI's SDK version when the folder has none. An existing `package.json` is kept, as long as it depends on the SDK.
32
- 3. Writes a starter spec (`spec/application.yaml`, `spec/configurator.yaml`) with one resizable, recolorable box, and switches `package.json` to the application-spec pipeline.
33
- 4. Writes `pnpm-workspace.yaml` with the pnpm settings the first install needs: the build scripts of the SDK's dependencies are allowed or denied, and `@salsita-ai/*` packages are exempt from pnpm's minimum release age. A project inside a pnpm monorepo gets no file; the workspace root holds these settings.
32
+ 3. Adds the `dev`, `build`, `deploy`, `check` and `fix` scripts to `package.json` (see [Project Scripts](#project-scripts)). A script the project already has under one of those names keeps its command.
33
+ 4. Writes a starter spec (`spec/application.yaml`, `spec/configurator.yaml`) with one resizable, recolorable box, and switches `package.json` to the application-spec pipeline.
34
+ 5. Writes `pnpm-workspace.yaml` with the pnpm settings the first install needs: the build scripts of the SDK's dependencies are allowed or denied, and `@salsita-ai/*` packages are exempt from pnpm's minimum release age. A project inside a pnpm monorepo gets no file; the workspace root holds these settings.
34
35
 
35
- It asks nothing, writes no `.env` and contacts no server. `phoenix sync` then generates every other project file, including `AGENTS.md` and the agent skills described in [Project Structure](?path=/docs/phoenix-project-structure--docs).
36
+ It asks nothing, writes no `.env` and contacts no server. `phoenix sync` then generates every other project file, including the agent skills described in [Project Structure](?path=/docs/phoenix-project-structure--docs). The `.gitignore` is among them only when the folder is inside a git repository, so run `git init` before the first sync, or sync again after it.
36
37
 
37
38
  ### Which project `phoenix dev` develops in
38
39
 
@@ -114,8 +115,6 @@ For quick local development without a server, use:
114
115
 
115
116
  ```bash
116
117
  phoenix dev --persistence local-storage
117
- # or use the shortcut script:
118
- pnpm dev:local
119
118
  ```
120
119
 
121
120
  **Important:** The server must be running before `deployment:prepare-local` when using `server` persistence mode.
@@ -158,27 +157,19 @@ spec/application.yaml → Server prepares environment → CLI writes .env.genera
158
157
 
159
158
  ### Project Scripts
160
159
 
161
- When you run `phoenix sync` or `phoenix clean`, the CLI auto-generates standardized scripts in your `package.json`. These scripts are enforced — they cannot be overridden by custom scripts with the same name.
162
-
163
- | Script | Command | Purpose |
164
- | -------------------------- | ------------------------------------------------------- | --------------------------------------------- |
165
- | `dev` | `phoenix dev` | Dev server with hot reload |
166
- | `dev:local` | `phoenix dev --persistence local-storage` | Dev without server dependency |
167
- | `build` | `phoenix build` | Production build |
168
- | `clean` | `phoenix clean` | Clean all artifacts and rebuild |
169
- | `sync` | `phoenix sync` | Sync generated code and dependencies |
170
- | `check` | `phoenix check` | Run all checks (TypeScript, ESLint, Prettier) |
171
- | `ts:check` | `phoenix check` | Alias for `check` |
172
- | `fix` | `phoenix fix` | Auto-fix lint and formatting issues |
173
- | `lint:fix` | `eslint src --fix` | ESLint fix only |
174
- | `prettify:fix` | `prettier --write .` | Prettier fix only |
175
- | `verify:fix` | `phoenix build && phoenix fix && phoenix check --types` | Build, fix, then type-check |
176
- | `test` | `vitest --passWithNoTests run` | Run tests |
177
- | `test:watch` | `vitest` | Tests in watch mode |
178
- | `prepare:ci` | `phoenix prepare:ci` | CI environment setup |
179
- | `deployment:prepare-local` | `phoenix deployment:prepare-local` | Prepare local environment |
180
-
181
- Custom scripts you add to `package.json` are preserved during sync. Deprecated scripts (like `environment:create`, `deployment:register`) are automatically removed.
160
+ `phoenix init` writes five scripts into `package.json`, each a shortcut for the CLI command of the same name:
161
+
162
+ | Script | Command | Purpose |
163
+ | -------- | ---------------- | --------------------------------------------- |
164
+ | `dev` | `phoenix dev` | Dev server with hot reload |
165
+ | `build` | `phoenix build` | Production build |
166
+ | `deploy` | `phoenix deploy` | Build and publish the project |
167
+ | `check` | `phoenix check` | Run all checks (TypeScript, ESLint, Prettier) |
168
+ | `fix` | `phoenix fix` | Auto-fix lint and formatting issues |
169
+
170
+ The scripts are yours: change, rename or delete them, and add your own. `phoenix sync` and `phoenix clean` leave the `scripts` section of `package.json` as it is, so they add no script, restore none you removed and remove none. Every CLI command also runs without a script, as `pnpm phoenix <command>`.
171
+
172
+ A project may have other scripts than these five, such as `sync`, `test` or `verify:fix`; they are its own and stay as they are. All of this holds for a project on the application-spec pipeline, which `phoenix init` selects. In a project on the legacy pipeline (see [Current and legacy project tooling](#current-and-legacy-project-tooling)), `phoenix sync` and `phoenix clean` write their own set of scripts into `package.json` on every run, over scripts of the same name.
182
173
 
183
174
  ### Server-Generated Variables
184
175
 
@@ -231,7 +222,7 @@ A build pipeline that receives the source archive of a [`phoenix deploy`](#phoen
231
222
  - it refuses an archive over 200 MB, one that extracts to more than 1 GB, or one with more than 100,000 files;
232
223
  - it refuses links, special files, absolute paths, paths that leave the folder, names with control characters, and entries that repeat or collide with an earlier one;
233
224
  - it refuses an archive it cannot read to the end, such as a truncated upload;
234
- - it extracts only project files, the same set `phoenix deploy` packs, and reports the entries it left out.
225
+ - it extracts only project files and reports the entries it left out, including the optional `conversation.log` that deploy keeps in the private archive for review.
235
226
 
236
227
  `<folder>` must be new or empty. When the command refuses an archive, it removes the folder, so a partly extracted project is never built.
237
228
 
@@ -257,11 +248,14 @@ The frontend reads these at runtime from the generated config:
257
248
  | Variable | Required | Default |
258
249
  | -------------------------------- | -------- | ----------------------- |
259
250
  | `IS_DEV` | No | `false` (`true` in dev) |
251
+ | `ASSISTANT_STRICT_THREADS` | No | `false` |
260
252
  | `AWS_S3_PUBLIC_RESOURCES_BUCKET` | Yes | — |
261
253
  | `AWS_S3_RESOURCES_REGION` | Yes | — |
262
254
  | `DEPLOYMENT_RESOURCES_PATH` | No | `deployment-resources` |
263
255
  | Clerk vars (if enabled) | Yes | — |
264
256
 
257
+ A development environment keeps the AI assistant's conversation when the assistant setup (manifest, instructions, AI settings) changes, and applies the new setup from the next message on. Set `ASSISTANT_STRICT_THREADS=true` in `.env` to try the behavior of every other environment locally, where a changed setup locks the conversation and the next message continues it in a summarized one. The variable has no effect outside a development environment.
258
+
265
259
  ### Precedence
266
260
 
267
261
  Environment variables are resolved in this order (highest to lowest priority):
@@ -283,20 +277,20 @@ The Phoenix CLI auto-generates config files that read these variables:
283
277
 
284
278
  Starts the full development environment: Vite dev server, development webhook tunnel, domain-cli watcher, and editor WebSocket server.
285
279
 
286
- | Flag | Env Variable | Default | Description |
287
- | ---------------------- | ------------------ | -------------------- | ------------------------------------------------------------------------------- |
288
- | `--workspace` | — | from `.phoenix.json` | Override workspace mode |
289
- | `--editor` | `ENABLE_EDITOR` | `true` | Enable editor file generation |
290
- | `--editorWsPort` | `EDITOR_WS_PORT` | `3020` | Editor WebSocket port |
291
- | `--debug` | `DEBUG` | `false` | Verbose logging |
292
- | `--projectSlug` | `PROJECT_SLUG` | `local` | Project slug |
293
- | `--environmentSlug` | `ENVIRONMENT_SLUG` | package.json name | Environment slug |
294
- | `--withLingui` | `WITH_LINGUI` | `false` | Enable i18n extraction/compilation and watch i18n sources during dev |
295
- | `--persistence` | `PERSISTENCE_MODE` | `server` | Persistence mode |
296
- | `--force` / `-f` | `FORCE_REBUILD` | `false` | Force full rebuild, skip cache |
297
- | `--serverUrl` | `SERVER_URL` | the region's server | Phoenix server URL |
298
- | `--region` | `PHOENIX_REGION` | `eu` | Region of the signed-in workspace, used when no server URL is set |
299
- | `--skipUpload` / `-su` | `SKIP_UPLOAD` | `false` | Skip the S3 asset upload when the development deployment is prepared at startup |
280
+ | Flag | Env Variable | Default | Description |
281
+ | ----------------------- | ------------------ | -------------------- | ------------------------------------------------------------------------------- |
282
+ | `--workspace` | — | from `.phoenix.json` | Override workspace mode |
283
+ | `--editor` | `ENABLE_EDITOR` | `true` | Enable editor file generation |
284
+ | `--editorWsPort` | `EDITOR_WS_PORT` | `3020` | Editor WebSocket port |
285
+ | `--debug` | `DEBUG` | `false` | Verbose logging |
286
+ | `--projectSlug` | `PROJECT_SLUG` | `local` | Project slug |
287
+ | `--environmentSlug` | `ENVIRONMENT_SLUG` | package.json name | Environment slug |
288
+ | `--withLingui` | `WITH_LINGUI` | `false` | Enable i18n extraction/compilation and watch i18n sources during dev |
289
+ | `--persistence` | `PERSISTENCE_MODE` | `server` | Persistence mode |
290
+ | `--force` / `-f` | `FORCE_REBUILD` | `false` | Force full rebuild, skip cache |
291
+ | `--serverUrl` | `SERVER_URL` | the region's server | Phoenix server URL |
292
+ | `--region` | `PHOENIX_REGION` | `eu` | Region of the signed-in workspace, used when no server URL is set |
293
+ | `--skipUpload` / `--su` | `SKIP_UPLOAD` | `false` | Skip the S3 asset upload when the development deployment is prepared at startup |
300
294
 
301
295
  In `server` persistence mode the project comes from `--projectSlug`, `PROJECT_SLUG` or `project` in the spec, and the credential from `DEVELOPMENT_KEY` or the `phoenix login` sign-in; see [Starting a New Project](#starting-a-new-project). When signed in, the environment is always your own development environment and `--environmentSlug` is ignored.
302
296
 
@@ -396,6 +390,8 @@ Removes all build artifacts (`.phoenix/`, `node_modules/`), reinstalls dependenc
396
390
 
397
391
  Syncs project dependencies and regenerates all project files without building Vite bundles or webhooks. Faster than `clean` — use this for routine updates after changing spec files or upgrading dependencies. Before installing, it adds the pnpm settings `phoenix init` writes to a standalone project's `pnpm-workspace.yaml` when they are missing; values you set there are kept.
398
392
 
393
+ With the application-spec pipeline (see [Current and legacy project tooling](#current-and-legacy-project-tooling)), `.gitignore` is written only when the project is inside a git repository: the project folder or one of its parent folders holds a `.git` entry. Outside a repository, sync neither creates the file nor changes one that is already there, and the same holds for `dev`, `build` and `clean`. Run `git init` before the first sync, or sync again after it, to get the file. The legacy pipeline writes `.gitignore` in every project.
394
+
399
395
  | Flag | Env Variable | Default | Description |
400
396
  | ---------------- | --------------- | ------- | ------------------------------ |
401
397
  | `--force` / `-f` | `FORCE_REBUILD` | `false` | Force full rebuild, skip cache |
@@ -690,12 +686,12 @@ Signs the CLI in to the SDK-builder workspace `<customer>`:
690
686
 
691
687
  The token is stored in `~/.phoenix/credentials.json`, readable only by you, per server, together with the Studio URL of the sign-in; `PHOENIX_CREDENTIALS_FILE` moves the file. The token works until you revoke it. Signing in again to the same server revokes the token it replaces; the CLI warns if the server could not revoke it.
692
688
 
693
- | Flag | Default | Description |
694
- | --------------------- | ------------------------------------ | ------------------------------------------------ |
695
- | `--region` | `eu` | Phoenix region of the workspace: `eu` or `us` |
696
- | `--serverUrl` / `-su` | the region's server | Phoenix server URL, for a local or custom server |
697
- | `--studioUrl` | the workspace's Studio in the region | Studio URL of the workspace |
698
- | `--open` | `true` | Open the approval page in your browser |
689
+ | Flag | Default | Description |
690
+ | ---------------------- | ------------------------------------ | ------------------------------------------------ |
691
+ | `--region` | `eu` | Phoenix region of the workspace: `eu` or `us` |
692
+ | `--serverUrl` / `--su` | the region's server | Phoenix server URL, for a local or custom server |
693
+ | `--studioUrl` | the workspace's Studio in the region | Studio URL of the workspace |
694
+ | `--open` | `true` | Open the approval page in your browser |
699
695
 
700
696
  The sign-in follows the region, not the `SERVER_URL` in a project's `.env`: that variable names the server of the project's own environment. The CLI prints the server it signs in to.
701
697
 
@@ -709,6 +705,10 @@ Revokes the token on the server and removes it from the credentials file. `--reg
709
705
 
710
706
  Validates the spec, adds the pnpm settings `phoenix init` writes to `pnpm-workspace.yaml` when they are missing, packs and uploads the project, starts its build on the server and follows it until the configurator is live. Before the upload the server compares the domain model with the deployed one: a model that changed under an already deployed model version is refused with the reason, and needs a new model version and a [migration](?path=/docs/phoenix-migrations--docs). Once the build starts it prints `Follow the build in Studio: <url>`, the build's page in the Studio you signed in through; a sign-in stored by an older CLI has no Studio URL, so sign in again to get the link. After `Your configurator is live at <url>` it prints one line for coding agents, which tells them to offer the run evaluation of the `phoenix-feedback` skill once you have nothing more to build; you can ignore it when you run the command yourself. `--region` or `--serverUrl` selects the server, as for `login`; `--no-wait` returns as soon as the build starts.
711
707
 
708
+ To keep the conversation that led to a build, place a reviewed UTF-8 transcript in `conversation.log` at the project root before deploying. Deploy automatically includes it in the private source archive. Download the build's sources from Studio to read it; access is the same as for the rest of that build's sources. The build extractor skips the log, so it is not an application build input or a public asset. Missing logs produce a warning and deployment continues. Directories, links and special files at that path are rejected.
709
+
710
+ The Phoenix agent skill explains how to prepare the transcript: prefer a native session export; otherwise mark a reconstruction as incomplete. Preserve available user/assistant messages and tool calls, cap individual tool results at 16 KiB with explicit truncation markers, and reference images rather than embedding them. Include the agent, export time, source and known omissions. Review and redact credentials or unrelated sensitive content before approving upload. The CLI uploads the file as supplied; it does not collect agent history, redact content, check freshness or verify completeness. Remove the file from the project root to deploy without it. The log counts toward the source archive's existing size limits; there is no separate conversation upload or viewer.
711
+
712
712
  ### `phoenix feedback [message]`
713
713
 
714
714
  Sends feedback about the SDK, the CLI, the documentation or Studio to the Phoenix team. It needs `phoenix login`: the server records the workspace, user and API token of the sign-in, so the message itself needs no introduction.
@@ -728,7 +728,7 @@ Pass the message as the argument for a short note, or `--file` for a longer repo
728
728
  | `--agent` | — | — | Name of the coding agent that writes the feedback |
729
729
  | `--projectSlug` / `-p` | `PROJECT_SLUG` | `project` of the spec, if any | Workspace project the feedback is about |
730
730
  | `--region` | — | `eu` | Phoenix region of the workspace: `eu` or `us` |
731
- | `--serverUrl` / `-su` | — | the region's server | Phoenix server URL, for a local or custom server |
731
+ | `--serverUrl` / `--su` | — | the region's server | Phoenix server URL, for a local or custom server |
732
732
 
733
733
  A message holds at most 100,000 characters, from the argument or from the file. Besides the message and the flags, the CLI sends only the SDK version, the operating system and the Node.js version; no file of the project is attached, and the Phoenix team reads a build's sources through the build's page in Studio. The project must belong to the signed-in workspace, otherwise the server refuses the feedback; without a project, the feedback is sent on its own.
734
734
 
@@ -53,7 +53,8 @@ Every file in `components/`, `elements/`, `expressions/`, `actions/`, `invariant
53
53
  (and their `admin/` counterparts) is imported by its location, so its default export must be what that folder's `phx`
54
54
  factory returns, or an array of those. A file that exports anything else, such as a plain React component in
55
55
  `elements/`, stops the application at start with an `Invalid default export in <file>` error that names the expected
56
- shape. Keep plain components and helpers in a `_*` folder.
56
+ shape. When several files in `handlers/`, `elements/`, `transformers/`, `components/`, `admin/elements/` and
57
+ `admin/components/` are wrong, the error lists all of them, one numbered line per file. Keep plain components and helpers in a `_*` folder.
57
58
 
58
59
  ### Admin Folders (src/admin/)
59
60
 
@@ -178,25 +179,29 @@ type CustomMaterial = Phx['AdminModel']['CustomMaterial']
178
179
 
179
180
  | File | Auto-Generated? | Notes |
180
181
  | ------------------------------------------------------ | --------------- | -------------------------------------- |
181
- | `package.json` | Partially | Dependencies merged, scripts preserved |
182
+ | `package.json` | Partially | Dependencies merged, scripts untouched |
182
183
  | `tsconfig.json` | Yes | Managed by Phoenix |
183
184
  | `eslint.config.js` | Yes | Managed by Phoenix |
184
185
  | `prettier.config.js` | Yes | Managed by Phoenix |
185
- | `.prettierignore` | Yes | Managed by Phoenix |
186
+ | `.prettierignore` | No | Optional and your own; see below |
186
187
  | `.linguirc` | Yes | Managed by Phoenix |
187
188
  | `.nvmrc` | Yes | Managed by Phoenix |
188
- | `.gitignore` | Partially | User entries between markers preserved |
189
+ | `.gitignore` | Partially | Only in a git repository; see Markers |
189
190
  | `.env` | No | Git-ignored, local config |
190
191
  | `.env.example` | No | Template for env vars |
191
192
  | `.env.generated` | Yes | Auto-generated IDs, git-ignored |
192
193
  | `README.md` | No | Project documentation |
193
- | `AGENTS.md` | Once | Coding-agent instructions, yours after |
194
+ | `AGENTS.md` | No | Your own coding-agent instructions |
194
195
  | `.claude/skills/phoenix*/`, `.agents/skills/phoenix*/` | Yes | Phoenix agent skills |
195
196
 
197
+ Sync does not write `README.md`, `AGENTS.md`, `.env.example`, `.env.ci` or the `README.md` files in `assets/public/` and `assets/private/`. Earlier SDK versions wrote them once; a project that has them keeps them, and they are yours to edit.
198
+
199
+ With the application-spec pipeline (see [Current and legacy project tooling](?path=/docs/phoenix-phoenix-cli--docs#current-and-legacy-project-tooling)), Phoenix does not write a `.prettierignore`, and a fresh clone or CI checkout of a project has none. `phoenix check` and `phoenix fix` do not read one: they skip `.phoenix/`, `dist/`, the compiled catalogs in `src/locales/`, `pnpm-lock.yaml` and `.linguirc` on their own. A project that runs Prettier directly, as `prettier --check .` or from an editor, can add its own `.prettierignore`. To commit it, add a `!.prettierignore` line after the Phoenix block of `.gitignore`, because that block lists the file. The legacy pipeline writes `.prettierignore` on every sync.
200
+
196
201
  ### DO NOT EDIT (Fully Auto-Generated)
197
202
 
198
203
  - **Everything in `.phoenix/`** - Completely regenerated on each build. The one exception is `.phoenix/variants/`, where a coding agent writes the option files for `phoenix variants`; a rebuild keeps it
199
- - `tsconfig.json`, `eslint.config.js`, `prettier.config.js`, `.prettierignore`
204
+ - `tsconfig.json`, `eslint.config.js`, `prettier.config.js`
200
205
  - `.linguirc`, `.nvmrc`
201
206
  - `src/locales/**/*.ts` - Compiled from `.po` catalogs
202
207
  - `.env.generated`
@@ -204,23 +209,25 @@ type CustomMaterial = Phx['AdminModel']['CustomMaterial']
204
209
 
205
210
  ### Agent Guidance
206
211
 
207
- Coding agents (Claude Code, Codex, Cursor) read `AGENTS.md` and the Phoenix agent skills. `AGENTS.md` is written once with the build commands, the do-not-edit list and a pointer to the skills; after that it is yours. The `phoenix`, `phoenix-cli`, `phoenix-feedback` and `phoenix-review` skills carry the SDK conventions, CLI tooling and review checklist, and the `phoenix-create-configurator` skill walks the agent from your product documents and assets to a reviewed configurator in five stages. The `phoenix-variants` skill has the agent show you several options over the dev preview when a decision is a matter of taste, and build the one you pick. Phoenix keeps them in step with the installed SDK, including the reference files inside a skill folder. During the internal beta, a project created from a canary build of the SDK gets one more section in the `phoenix` skill: once per conversation the agent checks for a newer canary and, after telling you, updates the project's SDK and runs `phoenix sync`. Other skill folders are never touched.
212
+ Coding agents (Claude Code, Codex, Cursor) read the Phoenix agent skills. An `AGENTS.md` is yours to add for your own instructions; sync does not write one. The `phoenix`, `phoenix-cli`, `phoenix-feedback` and `phoenix-review` skills carry the SDK conventions, CLI tooling and review checklist, and the `phoenix-create-configurator` skill walks the agent from your product documents and assets to a reviewed configurator in five stages. The `phoenix-variants` skill has the agent show you several options over the dev preview when a decision is a matter of taste, and build the one you pick. Phoenix keeps them in step with the installed SDK, including the reference files inside a skill folder. During the internal beta, a project created from a canary build of the SDK gets one more section in the `phoenix` skill: once per conversation the agent checks for a newer canary and, after telling you, updates the project's SDK and runs `phoenix sync`. Other skill folders are never touched.
208
213
 
209
214
  Projects created by earlier SDK versions had this guidance in `CLAUDE.md`, `.cursor/rules/phoenix.mdc` and `commands/review.md`. Sync removes the SDK block from the first two, keeps your own text around it, deletes a file that held nothing else, and deletes the review commands; use the `phoenix-review` skill instead of `/review`.
210
215
 
211
216
  ### Markers for Partial Auto-Generation
212
217
 
213
- `.gitignore` preserves custom entries between markers:
218
+ `.gitignore` holds the Phoenix entries between two marker lines. Sync rewrites that block and keeps everything outside it:
214
219
 
215
220
  ```gitignore
216
- # phoenix-start
221
+ # ===== BEGIN PHOENIX AUTO-GENERATED =====
217
222
  # ... Phoenix-managed ignores ...
218
- # phoenix-end
223
+ # ===== END PHOENIX AUTO-GENERATED =====
219
224
 
220
- # Your custom ignores below (preserved)
225
+ # Your custom ignores (preserved)
221
226
  my-custom-folder/
222
227
  ```
223
228
 
229
+ With the application-spec pipeline (see [Current and legacy project tooling](?path=/docs/phoenix-phoenix-cli--docs#current-and-legacy-project-tooling)), sync writes `.gitignore` only when the project is inside a git repository: the project folder or one of its parent folders holds a `.git` entry. Outside a repository it neither creates the file nor changes one that is already there. Run `git init` before the first sync, or sync again after it, to get the file. The legacy pipeline writes the file in every project.
230
+
224
231
  ### Safe to Edit
225
232
 
226
233
  - `src/` (except compiled `src/locales/**/*.ts` files)
@@ -104,10 +104,10 @@ pnpm install
104
104
  pnpm phoenix sync
105
105
  ```
106
106
 
107
- `phoenix sync` keeps `spec/` and `src/` as your authored inputs and generates the application shell, scripts, types, and `.phoenix/` implementation. Start the generated development script without a server:
107
+ `phoenix sync` keeps `spec/` and `src/` as your authored inputs and generates the application shell, types, and `.phoenix/` implementation. Start development without a server:
108
108
 
109
109
  ```sh
110
- pnpm dev:local
110
+ pnpm phoenix dev --persistence local-storage
111
111
  ```
112
112
 
113
113
  Open the URL printed by the command. The application shell loads with the default `<salsita-configurator>` element and an empty 3D scene.
@@ -22,7 +22,7 @@ pnpm install
22
22
  pnpm phoenix sync
23
23
  ```
24
24
 
25
- `phoenix init [folder]` writes the starter project: `package.json`, `pnpm-workspace.yaml` and the starter spec, `spec/application.yaml` and `spec/configurator.yaml`, which describe one box you can resize and recolour. The starter depends on the same SDK version as the CLI that created it. `phoenix sync` then adds the rest of the project: package scripts, webhooks, README and lint config.
25
+ `phoenix init [folder]` writes the starter project: `package.json`, `pnpm-workspace.yaml` and the starter spec, `spec/application.yaml` and `spec/configurator.yaml`, which describe one box you can resize and recolour. The starter depends on the same SDK version as the CLI that created it, and its `package.json` has the `dev`, `build`, `deploy`, `check` and `fix` scripts, which are yours to change. `phoenix sync` then adds the rest of the project: webhooks and lint config. It writes a `.gitignore` only when the folder is inside a git repository; run `git init` before the first sync, or sync again after it, to get the file.
26
26
 
27
27
  `init` only writes these files: it asks nothing and contacts no server. It refuses a folder that already has a `spec/` folder. A `package.json` already in the folder is kept, as long as it depends on the SDK.
28
28
 
@@ -44,12 +44,12 @@ The CLI stores the token in `~/.phoenix/credentials.json`, readable only by you,
44
44
 
45
45
  `login`, `logout` and `deploy` follow the region, not the `SERVER_URL` in the project's `.env`. `dev` follows the region too when `.env` has no `SERVER_URL`:
46
46
 
47
- | Flag | Default | Description |
48
- | --------------------- | ------------------------------------ | ------------------------------------------------ |
49
- | `--region` | `eu` | Phoenix region of the workspace: `eu` or `us` |
50
- | `--serverUrl` / `-su` | the region's server | Phoenix server URL, for a local or custom server |
51
- | `--studioUrl` | the workspace's Studio in the region | Studio URL of the workspace (`login`) |
52
- | `--open` | `true` | Open the approval page in your browser (`login`) |
47
+ | Flag | Default | Description |
48
+ | ---------------------- | ------------------------------------ | ------------------------------------------------ |
49
+ | `--region` | `eu` | Phoenix region of the workspace: `eu` or `us` |
50
+ | `--serverUrl` / `--su` | the region's server | Phoenix server URL, for a local or custom server |
51
+ | `--studioUrl` | the workspace's Studio in the region | Studio URL of the workspace (`login`) |
52
+ | `--open` | `true` | Open the approval page in your browser (`login`) |
53
53
 
54
54
  ## 3. Develop
55
55
 
@@ -61,7 +61,7 @@ Signed in, `phoenix dev` needs no `.env` and nothing set up in Studio. When it s
61
61
 
62
62
  Every user who signs the CLI in gets their own development environment, so a teammate (a super admin of the workspace, like you) who clones the project and signs in doesn't overwrite your schema or take over your webhooks. The development environment is separate from `production`: nothing you do in `phoenix dev` changes the live configurator.
63
63
 
64
- `pnpm dev:local` still runs the project without any server, with state kept in the browser.
64
+ `pnpm phoenix dev --persistence local-storage` still runs the project without any server, with state kept in the browser.
65
65
 
66
66
  Coding agents follow the generated `phoenix` skill: before their first change they start `phoenix dev` and open the preview in your browser, and after `phoenix deploy` starts a build they open its page in Studio.
67
67
 
@@ -0,0 +1,140 @@
1
+ # Testing
2
+
3
+ - [Your application in a test](#your-application-in-a-test)
4
+ - [Run the domain on a preset](#run-the-domain-on-a-preset)
5
+ - [Test a transformer](#test-a-transformer)
6
+ - [Mock a domain context](#mock-a-domain-context)
7
+ - [Options](#options)
8
+
9
+ A project's tests check its own logic, such as an expression on a preset, a transformer that completes an
10
+ edit, a Blender projection or a migration, against the application the project ships. They run with
11
+ Vitest in Node, without a browser or a server.
12
+
13
+ ## Your application in a test
14
+
15
+ `createTestApplicationConfig` from `@salsita-ai/sdk/domain` is the way a test builds the project's
16
+ application. It takes the generated application the test imports and returns its application config,
17
+ typed with the project's entities, states and data, with no type argument at the call:
18
+
19
+ ```ts
20
+ import { createTestApplicationConfig } from '@salsita-ai/sdk/domain'
21
+
22
+ import { configuratorBuilder } from '../../.phoenix/domain.js'
23
+
24
+ const config = createTestApplicationConfig(configuratorBuilder)
25
+
26
+ config.domain.presets // the presets of spec/presets
27
+ config.initialPublishedData // the published data the application starts with
28
+ ```
29
+
30
+ `configuratorBuilder` from `.phoenix/domain.js` is the domain of the configurator: the model, expressions,
31
+ invariants, actions, migrations, presets and the components declared in YAML. `configuratorConfig` from
32
+ `.phoenix/configurator-config.js` is the whole configurator as the browser runs it, with every component,
33
+ handler, element and transformer; it reads the frontend environment when it is imported, so a test that
34
+ uses it stubs `phx.frontendEnv` first.
35
+
36
+ A test passes the generated export to the helper and does not call the export's methods: they are how the
37
+ SDK assembles an application, not an interface for tests, while the helper's call does not depend on that
38
+ assembly.
39
+
40
+ ## Run the domain on a preset
41
+
42
+ The config goes into `createDomainRuntime`, which runs the same systems as the configurator:
43
+
44
+ ```ts
45
+ import { vi } from 'vitest'
46
+
47
+ import { NoopAnalyticsSystem, createDomainRuntime, createTestApplicationConfig } from '@salsita-ai/sdk/domain'
48
+
49
+ import { configuratorBuilder, createI18n } from '../../.phoenix/domain.js'
50
+
51
+ const logger = {
52
+ info: vi.fn(),
53
+ error: vi.fn(),
54
+ warn: vi.fn(),
55
+ debug: vi.fn(),
56
+ verbose: vi.fn(),
57
+ appendToGlobalContext: vi.fn(),
58
+ }
59
+ const config = createTestApplicationConfig(configuratorBuilder)
60
+ const runtime = createDomainRuntime({
61
+ config,
62
+ services: { analyticsService: new NoopAnalyticsSystem(), i18n: createI18n(), logger },
63
+ })
64
+
65
+ runtime.actions.domainContext.configurator.setExecutionMode('finalize')
66
+ runtime.actions.domainData.setDomainData({
67
+ publishedData: config.initialPublishedData,
68
+ backendData: undefined,
69
+ frontendData: {},
70
+ })
71
+ runtime.actions.sessionContext.setSessionContext({ role: 'anonymous', data: {} })
72
+
73
+ const preset = config.domain.presets[0]!
74
+ runtime.actions.loadedData.completeConfiguratorLoad({
75
+ initialRevisionId: 'test',
76
+ initialEntities: preset.initialDomainEntities,
77
+ modelVersion: config.domain.domainFactory.modelVersion,
78
+ rootEntityType: preset.rootEntityType,
79
+ schemaIdentity: runtime.selectors.spec.getConfiguratorFactory(),
80
+ })
81
+ runtime.selectors.domainContext.configurator.getDomainContext().initialize()
82
+ ```
83
+
84
+ ## Test a transformer
85
+
86
+ The domain of `configuratorBuilder` has no code-attached components and no transformers. A test adds the
87
+ ones it needs, the way the configurator and the webhooks add them:
88
+
89
+ ```ts
90
+ // Files that read `phx.domain` at module scope are imported after `.phoenix/domain.js`.
91
+ const { customComponentOptics } = await import('../../.phoenix/configurator-domain-code.js')
92
+ const { default: addCookingTop } = await import('../transformers/add-cooking-top.js')
93
+
94
+ const config = createTestApplicationConfig(configuratorBuilder, {
95
+ componentModules: customComponentOptics,
96
+ transformers: {
97
+ importedTransformers: [{ origin: 'src/transformers/add-cooking-top.ts', exports: addCookingTop }],
98
+ specTransformers: [{ name: 'addCookingTop', priority: 30 }],
99
+ },
100
+ })
101
+ ```
102
+
103
+ `specTransformers` are the entries of the `transformers` section of `spec/application.yaml` that the test
104
+ runs, with the priorities the spec gives them.
105
+
106
+ ## Mock a domain context
107
+
108
+ `createMockState`, `createMockDomain` and `createMockDomainContext` take the same config and check the
109
+ mock data against the project's types:
110
+
111
+ ```ts
112
+ import { createMockDomainContext, createTestApplicationConfig } from '@salsita-ai/sdk/domain'
113
+
114
+ const config = createTestApplicationConfig(configuratorBuilder)
115
+ const preset = config.domain.presets[0]!
116
+ const { domainContext, destroy } = createMockDomainContext(config, {
117
+ entities: preset.initialDomainEntities,
118
+ rootEntityType: preset.rootEntityType,
119
+ publishedData: config.initialPublishedData,
120
+ frontendData: {},
121
+ sessionData: {},
122
+ backendData: undefined,
123
+ mode: 'owner',
124
+ role: 'anonymous',
125
+ transformers: [],
126
+ })
127
+ ```
128
+
129
+ ## Options
130
+
131
+ | Option | What it does |
132
+ | ------------------ | ------------------------------------------------------------------------------------------------------------------ |
133
+ | `componentModules` | Component files added after the components the application already has, each `{ origin, exports }` |
134
+ | `transformers` | Replaces the application's transformers: files (`importedTransformers`) and spec entries (`specTransformers`) |
135
+ | `tag` | The tag of the custom element the application mounts as; without it the application's own (`salsita-configurator`) |
136
+
137
+ ## See Also
138
+
139
+ - [Best Practices](?path=/docs/phoenix-best-practices--docs) - Where custom code lives
140
+ - [Transformers](?path=/docs/other-features-transformers--docs) - Writing transformers
@@ -4,21 +4,22 @@ Build component controls with React and browser SDKs without pulling them into t
4
4
 
5
5
  ## Choose Where Each File Runs
6
6
 
7
- | User file | Frontend | Webhook |
8
- | ------------------------------------------------- | -------- | ------- |
9
- | Component or admin component without a directive | Yes | No |
10
- | Component or admin component with `'use webhook'` | Yes | Yes |
11
- | Ordinary handler | Yes | No |
12
- | Published-data or validator handler | Yes | Yes |
13
- | Any other handler with `'use webhook'` | Yes | Yes |
14
- | File under `src/webhooks/` | No | Yes |
7
+ | User file | Frontend | Webhook |
8
+ | ---------------------------------------------------- | -------- | ------- |
9
+ | Component or admin component without a directive | Yes | No |
10
+ | Component or admin component with `'use webhook'` | Yes | Yes |
11
+ | Ordinary handler | Yes | No |
12
+ | Published-data, validator or assistant setup handler | Yes | Yes |
13
+ | Any other handler with `'use webhook'` | Yes | Yes |
14
+ | File under `src/webhooks/` | No | Yes |
15
15
 
16
- Published-data and validator handlers are detected when they register one of these APIs:
16
+ Published-data, validator and assistant setup handlers are detected when they register one of these APIs:
17
17
 
18
18
  - `createMapPublishedRevisionDataHandler`
19
19
  - `createMapPublishedChunkedDataHandler`
20
20
  - `createDataRowValidatorHandler`
21
21
  - `createSheetValidatorHandler`
22
+ - `phx.domain.createAssistantSetupHandler`
22
23
 
23
24
  ## Pin a Server-Safe Component
24
25
 
@@ -148,7 +148,7 @@ resources:
148
148
  s3Key: clientImage
149
149
  ```
150
150
 
151
- These resources are automatically made available as typed properties in task handlers via the `resources` parameter.
151
+ These resources are automatically made available as typed properties in task handlers via the `resources` parameter. Two static resources with the same name are an error: `phoenix check` and `phoenix build` report the second entry (`DUPLICATE_RESOURCE_NAME`).
152
152
 
153
153
  #### Task Payload
154
154
 
@@ -991,7 +991,7 @@ Save the same OAuth client ID, client secret, and base URL in the customer's **C
991
991
  JWT_SECRET_BASE64=<base64 of a long random key>
992
992
  ```
993
993
 
994
- For a deployment, run `pnpm phoenix deployment:prepare` followed by `pnpm phoenix deployment:finish`. For local development, run `pnpm deployment:prepare-local`. These current commands use the customer settings stored in Studio; the removed `environment:create` and `deployment:register` commands are not part of the setup flow.
994
+ For a deployment, run `pnpm phoenix deployment:prepare` followed by `pnpm phoenix deployment:finish`. For local development, run `pnpm phoenix deployment:prepare-local`. These current commands use the customer settings stored in Studio; the removed `environment:create` and `deployment:register` commands are not part of the setup flow.
995
995
 
996
996
  #### Clerk organization
997
997
 
@@ -13,6 +13,15 @@ Choose the control from how users understand the options.
13
13
  - Long labels or descriptions: list selector.
14
14
  - Many text options or tight space: select dropdown.
15
15
 
16
+ ## Adding, removing, and placing
17
+
18
+ The controls above choose a value for a property. A decision that changes which parts exist is a different kind of choice, and where its control lives is part of the decision.
19
+
20
+ - Put the control in the scene when position carries the meaning of the action: where the next part goes, what sits on top of this one, which part this removes. An add FAB stands at the place the new part will occupy, and a delete FAB sits on the part it removes.
21
+ - Put the control in the sidebar when the choice is a catalogue pick and position is incidental, or when the scene offers no obvious place for the control to stand.
22
+ - A product the user assembles or arranges is the first case. A sidebar list for it turns building into list-keeping and leaves the scene a picture of the result rather than the place the user works.
23
+ - Both forms offer the same recipes, so this chooses where the user acts, not what they can add.
24
+
16
25
  ## Common control guidance
17
26
 
18
27
  - Order properties in the sequence users naturally make the decisions.
@@ -31,3 +40,5 @@ Choose the control from how users understand the options.
31
40
  - [Select dropdown](?path=/docs/controls-select-attribute-select--docs)
32
41
  - [Text input](?path=/docs/design-system-inputs-textinput--docs)
33
42
  - [Color picker](?path=/docs/controls-color-picker-input--docs)
43
+ - [Scene add and delete FABs](?path=/docs/fabs-basic--docs)
44
+ - [Recipe panel in the sidebar](?path=/docs/recipes-delete-simple--docs)
@@ -3,8 +3,7 @@
3
3
  * @file enhanced-model.ts
4
4
  * @description Standalone common-admin enhanced model types.
5
5
  */
6
- import type { $DomainEntity } from '../../core/index.js';
7
- import type { Violation } from '../../invariants/violation.js';
6
+ import type { $DomainEntity, Violation } from '../../core/index.js';
8
7
  import type { Admin, ConnectedDataConfig, DataTable, DummyDoNotUse, Preset, PresetCategory, Recipe } from './model/index.js';
9
8
  export type PresetCategoryExpressions = {
10
9
  readonly $isDraft: boolean;
@@ -1,5 +1,4 @@
1
- import type { DomainEntity, DomainState, ExpressionContext } from '../../core/index.js';
2
- import type { Violation } from '../../invariants/violation.js';
1
+ import type { DomainEntity, MigrateFunction, Violation } from '../../core/index.js';
3
2
  import type { ChildEntitySelectionOption } from '../../system-components/child-entity-selection.js';
4
3
  import type { RecipeListItem } from '../../system-components/index.js';
5
4
  import type { SwatchOptionMap } from '../../system-components/material-swatch.js';
@@ -18,11 +17,23 @@ export declare const commonAdminCustomExpressions: {
18
17
  readonly $isDraft: (self: PresetCategory) => boolean;
19
18
  };
20
19
  };
20
+ /**
21
+ * An expression of this file. It reads nothing of the entity or of the state, and of the context
22
+ * only `CONTEXT`, so it is written against that part alone: it fits every entity of every project
23
+ * whose expression context has that part, because the project's own entity view, state and context
24
+ * are assignable to these parameters.
25
+ */
26
+ type CommonAdminExpression<CONTEXT, T> = (self: unknown, state: unknown, ctx: CONTEXT) => T;
27
+ /** The part of the expression context a recipe expression reads. */
28
+ interface RecipeExpressionContext<PUBLISHED_DATA> {
29
+ readonly publishedData: PUBLISHED_DATA;
30
+ readonly migrate: MigrateFunction<DomainEntity<string>>;
31
+ }
21
32
  export declare const CommonAdminExpressionBuilder: {
22
- createConstantSwatchExpression: <ENTITIES extends DomainEntity<string>, ALLOWED_ROOT_ENTITIES extends ENTITIES, PUBLISHED_DATA extends Record<string, unknown>, SESSION_DATA extends Record<string, unknown>, FRONTEND_DATA extends Record<string, unknown>, SELF extends ENTITIES>(swatches: SwatchOptionMap) => ((self: SELF, state: DomainState<ENTITIES>, ctx: ExpressionContext<ENTITIES, ALLOWED_ROOT_ENTITIES, PUBLISHED_DATA, SESSION_DATA, FRONTEND_DATA>) => SwatchOptionMap);
23
- createConstantRecipeExpression: <ENTITIES extends DomainEntity<string>, ALLOWED_ROOT_ENTITIES extends ENTITIES, PUBLISHED_DATA extends Record<string, unknown>, SESSION_DATA extends Record<string, unknown>, FRONTEND_DATA extends Record<string, unknown>, SELF extends ENTITIES>(recipes: RecipeListItem[]) => ((self: SELF, state: DomainState<ENTITIES>, ctx: ExpressionContext<ENTITIES, ALLOWED_ROOT_ENTITIES, PUBLISHED_DATA, SESSION_DATA, FRONTEND_DATA>) => RecipeListItem[]);
24
- createConstantChildEntitySelectionExpression: <ENTITIES extends DomainEntity<string>, ALLOWED_ROOT_ENTITIES extends ENTITIES, PUBLISHED_DATA extends Record<string, unknown>, SESSION_DATA extends Record<string, unknown>, FRONTEND_DATA extends Record<string, unknown>, SELF extends ENTITIES>(entities: ChildEntitySelectionOption[]) => ((self: SELF, state: DomainState<ENTITIES>, ctx: ExpressionContext<ENTITIES, ALLOWED_ROOT_ENTITIES, PUBLISHED_DATA, SESSION_DATA, FRONTEND_DATA>) => ChildEntitySelectionOption[]);
25
- createRecipeExpression: <ENTITIES extends DomainEntity<string>, ALLOWED_ROOT_ENTITIES extends ENTITIES, PUBLISHED_DATA extends CommonAdminPublishedData, SESSION_DATA extends Record<string, unknown>, FRONTEND_DATA extends Record<string, unknown>, SELF extends ENTITIES>(collection: string, defaults: RecipeListItem[]) => ((self: SELF, state: DomainState<ENTITIES>, ctx: ExpressionContext<ENTITIES, ALLOWED_ROOT_ENTITIES, PUBLISHED_DATA, SESSION_DATA, FRONTEND_DATA>) => RecipeListItem[]);
33
+ createConstantSwatchExpression: (swatches: SwatchOptionMap) => (() => SwatchOptionMap);
34
+ createConstantRecipeExpression: (recipes: RecipeListItem[]) => (() => RecipeListItem[]);
35
+ createConstantChildEntitySelectionExpression: (entities: ChildEntitySelectionOption[]) => (() => ChildEntitySelectionOption[]);
36
+ createRecipeExpression: (collection: string, defaults: RecipeListItem[]) => CommonAdminExpression<RecipeExpressionContext<CommonAdminPublishedData>, RecipeListItem[]>;
26
37
  };
27
38
  /**
28
39
  * Expression helpers for projects with chunked published data.
@@ -31,13 +42,16 @@ export declare const CommonAdminExpressionBuilder: {
31
42
  * Use {@link CommonAdminExpressionBuilder} for projects with flat published data.
32
43
  */
33
44
  export declare const ChunkedCommonAdminExpressionBuilder: {
34
- createConstantSwatchExpression: <ENTITIES extends DomainEntity<string>, ALLOWED_ROOT_ENTITIES extends ENTITIES, PUBLISHED_DATA extends Record<string, unknown>, SESSION_DATA extends Record<string, unknown>, FRONTEND_DATA extends Record<string, unknown>, SELF extends ENTITIES>(swatches: SwatchOptionMap) => ((self: SELF, state: DomainState<ENTITIES>, ctx: ExpressionContext<ENTITIES, ALLOWED_ROOT_ENTITIES, PUBLISHED_DATA, SESSION_DATA, FRONTEND_DATA>) => SwatchOptionMap);
35
- createConstantRecipeExpression: <ENTITIES extends DomainEntity<string>, ALLOWED_ROOT_ENTITIES extends ENTITIES, PUBLISHED_DATA extends Record<string, unknown>, SESSION_DATA extends Record<string, unknown>, FRONTEND_DATA extends Record<string, unknown>, SELF extends ENTITIES>(recipes: RecipeListItem[]) => ((self: SELF, state: DomainState<ENTITIES>, ctx: ExpressionContext<ENTITIES, ALLOWED_ROOT_ENTITIES, PUBLISHED_DATA, SESSION_DATA, FRONTEND_DATA>) => RecipeListItem[]);
36
- createConstantChildEntitySelectionExpression: <ENTITIES extends DomainEntity<string>, ALLOWED_ROOT_ENTITIES extends ENTITIES, PUBLISHED_DATA extends Record<string, unknown>, SESSION_DATA extends Record<string, unknown>, FRONTEND_DATA extends Record<string, unknown>, SELF extends ENTITIES>(entities: ChildEntitySelectionOption[]) => ((self: SELF, state: DomainState<ENTITIES>, ctx: ExpressionContext<ENTITIES, ALLOWED_ROOT_ENTITIES, PUBLISHED_DATA, SESSION_DATA, FRONTEND_DATA>) => ChildEntitySelectionOption[]);
37
- createRecipeExpression: <ENTITIES extends DomainEntity<string>, ALLOWED_ROOT_ENTITIES extends ENTITIES, PUBLISHED_DATA extends {
45
+ createConstantSwatchExpression: (swatches: SwatchOptionMap) => (() => SwatchOptionMap);
46
+ createConstantRecipeExpression: (recipes: RecipeListItem[]) => (() => RecipeListItem[]);
47
+ createConstantChildEntitySelectionExpression: (entities: ChildEntitySelectionOption[]) => (() => ChildEntitySelectionOption[]);
48
+ createRecipeExpression: (collection: string, defaults: RecipeListItem[]) => CommonAdminExpression<RecipeExpressionContext<{
38
49
  readonly system?: CommonAdminPublishedData;
39
- }, SESSION_DATA extends Record<string, unknown>, FRONTEND_DATA extends Record<string, unknown>, SELF extends ENTITIES>(collection: string, defaults: RecipeListItem[]) => ((self: SELF, state: DomainState<ENTITIES>, ctx: ExpressionContext<ENTITIES, ALLOWED_ROOT_ENTITIES, PUBLISHED_DATA, SESSION_DATA, FRONTEND_DATA>) => RecipeListItem[]);
50
+ }>, RecipeListItem[]>;
40
51
  };
41
52
  export declare const createDataSwatchMap: (tableName: string, chunkKey?: string) => {
42
- bind: <ENTITIES extends DomainEntity<string>, ALLOWED_ROOT_ENTITIES extends ENTITIES, PUBLISHED_DATA extends Record<string, unknown>, SESSION_DATA extends Record<string, unknown>, FRONTEND_DATA extends Record<string, unknown>, SELF extends ENTITIES>() => (_self: SELF, _state: DomainState<ENTITIES>, ctx: ExpressionContext<ENTITIES, ALLOWED_ROOT_ENTITIES, PUBLISHED_DATA, SESSION_DATA, FRONTEND_DATA>) => SwatchOptionMap;
53
+ bind: () => CommonAdminExpression<{
54
+ readonly publishedData: Record<string, unknown>;
55
+ }, SwatchOptionMap>;
43
56
  };
57
+ export {};