@salsita-ai/sdk 0.50.0-develop.aff4f8dd6d → 0.50.0-develop.b5468d6828

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 (1215) hide show
  1. package/README.md +14 -13
  2. package/dist/admin/create-admin-pages-from-spec.d.ts +1 -1
  3. package/dist/application-spec/core/components/component-filter.d.ts +53 -0
  4. package/dist/application-spec/core/components/component-filter.js +1 -0
  5. package/dist/application-spec/core/components/index.d.ts +2 -0
  6. package/dist/application-spec/core/components/index.js +1 -0
  7. package/dist/application-spec/core/components/sdk-code-ref.d.ts +9 -0
  8. package/dist/application-spec/core/components/sdk-code-ref.js +1 -0
  9. package/dist/application-spec/core/enhanced-json-value.d.ts +0 -68
  10. package/dist/application-spec/core/enhanced-json-value.js +1 -1
  11. package/dist/application-spec/core/expressions/index.d.ts +2 -0
  12. package/dist/application-spec/core/expressions/index.js +1 -0
  13. package/dist/application-spec/core/expressions/relation-expression-params.d.ts +11 -0
  14. package/dist/application-spec/core/expressions/sdk-expression-implementation.d.ts +24 -0
  15. package/dist/application-spec/core/expressions/sdk-expression-implementation.js +1 -0
  16. package/dist/application-spec/core/index.d.ts +2 -0
  17. package/dist/application-spec/core/index.js +1 -1
  18. package/dist/application-spec/core/json-value.d.ts +1 -1
  19. package/dist/application-spec/{core → enhanced-json}/eval-to-constant.d.ts +1 -1
  20. package/dist/application-spec/enhanced-json/index.d.ts +4 -0
  21. package/dist/application-spec/enhanced-json/index.js +1 -0
  22. package/dist/application-spec/enhanced-json/is-enhanced-json-array.d.ts +2 -0
  23. package/dist/application-spec/enhanced-json/is-enhanced-json-array.js +1 -0
  24. package/dist/application-spec/enhanced-json/resolve-enhanced-json-value.d.ts +18 -0
  25. package/dist/application-spec/enhanced-json/resolve-enhanced-json-value.js +1 -0
  26. package/dist/application-spec/enhanced-json/schema-from-value.d.ts +24 -0
  27. package/dist/application-spec/enhanced-json/schema-from-value.js +1 -0
  28. package/dist/application-spec/enhanced-json/stringify-enhanced-json-value.d.ts +14 -0
  29. package/dist/application-spec/enhanced-json/stringify-enhanced-json-value.js +1 -0
  30. package/dist/application-spec/enhanced-json/validate-enhanced-json-value-caps.d.ts +12 -0
  31. package/dist/application-spec/enhanced-json/validate-enhanced-json-value-caps.js +1 -0
  32. package/dist/application-spec/enhanced-json/validate-no-legacy-code-ref.d.ts +13 -0
  33. package/dist/application-spec/enhanced-json/validate-no-legacy-code-ref.js +1 -0
  34. package/dist/application-spec/errors/diagnostic-codes.d.ts +9 -0
  35. package/dist/application-spec/errors/diagnostic-codes.js +1 -1
  36. package/dist/application-spec/errors/diagnostic-messages.d.ts +12 -0
  37. package/dist/application-spec/errors/diagnostic-messages.js +1 -1
  38. package/dist/application-spec/generate-application/code/common/index.d.ts +1 -0
  39. package/dist/application-spec/generate-application/code/common/index.js +1 -1
  40. package/dist/application-spec/generate-application/code/common/project-module-list.d.ts +8 -0
  41. package/dist/application-spec/generate-application/code/common/project-module-list.js +3 -0
  42. package/dist/application-spec/generate-application/code/domain-runtime-files.js +1 -1
  43. package/dist/application-spec/generate-application/code/generate-application-code.d.ts +3 -2
  44. package/dist/application-spec/generate-application/code/generate-application-code.js +1 -1
  45. package/dist/application-spec/generate-application/code/project-scaffolding.d.ts +17 -5
  46. package/dist/application-spec/generate-application/code/project-scaffolding.js +2 -2
  47. package/dist/application-spec/generate-application/code/standalone-app-files.d.ts +2 -2
  48. package/dist/application-spec/generate-application/code/standalone-app-files.js +1 -1
  49. package/dist/application-spec/generate-application/code/templates/admin-domain-code.d.ts +1 -2
  50. package/dist/application-spec/generate-application/code/templates/admin-domain-code.js +6 -14
  51. package/dist/application-spec/generate-application/code/templates/admin-frontend-code.d.ts +1 -2
  52. package/dist/application-spec/generate-application/code/templates/admin-frontend-code.js +4 -4
  53. package/dist/application-spec/generate-application/code/templates/configurator-config.js +6 -4
  54. package/dist/application-spec/generate-application/code/templates/configurator-domain-code.d.ts +1 -2
  55. package/dist/application-spec/generate-application/code/templates/configurator-domain-code.js +7 -16
  56. package/dist/application-spec/generate-application/code/templates/configurator-frontend-code.d.ts +1 -2
  57. package/dist/application-spec/generate-application/code/templates/configurator-frontend-code.js +7 -9
  58. package/dist/application-spec/generate-application/code/templates/domain-spec/generate-assistant.d.ts +2 -2
  59. package/dist/application-spec/generate-application/code/templates/domain-spec/generate-assistant.js +1 -1
  60. package/dist/application-spec/generate-application/code/templates/domain-spec/generate-component-optics.js +4 -4
  61. package/dist/application-spec/generate-application/code/templates/domain-spec/generate-defaults.d.ts +4 -2
  62. package/dist/application-spec/generate-application/code/templates/domain-spec/generate-defaults.js +1 -1
  63. package/dist/application-spec/generate-application/code/templates/domain-spec/generate-domain-block.js +56 -56
  64. package/dist/application-spec/generate-application/code/templates/domain-spec/generate-invariants.d.ts +1 -1
  65. package/dist/application-spec/generate-application/code/templates/domain-spec/generate-invariants.js +1 -1
  66. package/dist/application-spec/generate-application/code/templates/domain-spec/generate-phx-globals.js +3 -0
  67. package/dist/application-spec/generate-application/code/templates/domain-spec/generate-relation-expressions.js +1 -1
  68. package/dist/application-spec/generate-application/code/templates/domain-spec/generate-resources.d.ts +6 -8
  69. package/dist/application-spec/generate-application/code/templates/domain-spec/generate-resources.js +11 -11
  70. package/dist/application-spec/generate-application/code/templates/domain-spec/index.d.ts +1 -1
  71. package/dist/application-spec/generate-application/code/templates/domain-spec/index.js +1 -1
  72. package/dist/application-spec/generate-application/code/templates/domain-spec.js +12 -12
  73. package/dist/application-spec/generate-application/code/templates/domain.js +5 -5
  74. package/dist/application-spec/generate-application/code/templates/frontend-config.js +3 -5
  75. package/dist/application-spec/generate-application/code/templates/gitignore.js +1 -2
  76. package/dist/application-spec/generate-application/code/templates/globals.js +3 -3
  77. package/dist/application-spec/generate-application/code/templates/index.d.ts +1 -8
  78. package/dist/application-spec/generate-application/code/templates/index.js +1 -1
  79. package/dist/application-spec/generate-application/code/templates/package-json.js +1 -1
  80. package/dist/application-spec/generate-application/code/templates/root-tsconfig.d.ts +6 -0
  81. package/dist/application-spec/generate-application/code/templates/root-tsconfig.js +2 -0
  82. package/dist/application-spec/generate-application/code/templates/skills/phoenix-cli-skill.js +1 -1
  83. package/dist/application-spec/generate-application/code/templates/skills/phoenix-create-configurator-skill.js +66 -42
  84. package/dist/application-spec/generate-application/code/templates/skills/phoenix-review-skill.js +10 -4
  85. package/dist/application-spec/generate-application/code/templates/skills/phoenix-skill.js +1 -1
  86. package/dist/application-spec/generate-application/code/templates/skills/sdk-content.d.ts +26 -19
  87. package/dist/application-spec/generate-application/code/templates/skills/sdk-content.js +6 -9
  88. package/dist/application-spec/generate-application/code/templates/tsconfig.d.ts +5 -0
  89. package/dist/application-spec/generate-application/code/templates/tsconfig.js +1 -1
  90. package/dist/application-spec/generate-application/code/templates/webhook-builders.js +9 -4
  91. package/dist/application-spec/generate-application/code/templates/webhook-index.d.ts +6 -1
  92. package/dist/application-spec/generate-application/code/templates/webhook-index.js +10 -1
  93. package/dist/application-spec/generate-application/code/templates/webhooks-config.js +2 -3
  94. package/dist/application-spec/generate-application/index.d.ts +2 -0
  95. package/dist/application-spec/generate-application/index.js +1 -1
  96. package/dist/application-spec/generate-application/runtime/admin-runtime/admin-runtime.d.ts +6 -2
  97. package/dist/application-spec/generate-application/runtime/admin-runtime/admin-runtime.js +1 -1
  98. package/dist/application-spec/generate-application/runtime/application-runtime.d.ts +8 -3
  99. package/dist/application-spec/generate-application/runtime/application-runtime.js +1 -1
  100. package/dist/application-spec/generate-application/runtime/configurator-runtime/configurator-runtime.d.ts +5 -3
  101. package/dist/application-spec/generate-application/runtime/configurator-runtime/configurator-runtime.js +1 -1
  102. package/dist/application-spec/generate-application/runtime/factory-data/factory-data-runtime.d.ts +43 -0
  103. package/dist/application-spec/generate-application/runtime/factory-data/factory-data-runtime.js +1 -0
  104. package/dist/application-spec/generate-application/runtime/factory-data/index.d.ts +3 -0
  105. package/dist/application-spec/generate-application/runtime/factory-data/index.js +1 -0
  106. package/dist/application-spec/generate-application/runtime/factory-data/recipe-defaults.d.ts +13 -0
  107. package/dist/application-spec/generate-application/runtime/factory-data/recipe-defaults.js +1 -0
  108. package/dist/application-spec/generate-application/runtime/factory-data/static-violations.d.ts +16 -0
  109. package/dist/application-spec/generate-application/runtime/factory-data/static-violations.js +1 -0
  110. package/dist/application-spec/generate-application/runtime/migrations/index.d.ts +1 -0
  111. package/dist/application-spec/generate-application/runtime/migrations/index.js +1 -0
  112. package/dist/application-spec/generate-application/runtime/migrations/migration-runtime.d.ts +53 -0
  113. package/dist/application-spec/generate-application/runtime/migrations/migration-runtime.js +1 -0
  114. package/dist/application-spec/generate-application/runtime/sections/assistant-runtime.d.ts +4 -3
  115. package/dist/application-spec/generate-application/runtime/sections/assistant-runtime.js +1 -1
  116. package/dist/application-spec/generate-application/runtime/sections/build-sdk-optic.d.ts +1 -1
  117. package/dist/application-spec/generate-application/runtime/sections/build-sdk-optic.js +1 -1
  118. package/dist/application-spec/generate-application/runtime/sections/component-optic.d.ts +2 -1
  119. package/dist/application-spec/generate-application/runtime/sections/expression-runtime.js +1 -1
  120. package/dist/application-spec/generate-application/runtime/sections/transformers-runtime.d.ts +2 -4
  121. package/dist/application-spec/index.d.ts +1 -0
  122. package/dist/application-spec/index.js +1 -1
  123. package/dist/application-spec/parse-application-files/categorize/categorize-files.d.ts +16 -0
  124. package/dist/application-spec/parse-application-files/categorize/categorize-files.js +1 -1
  125. package/dist/application-spec/parse-application-files/categorize/earlier-generated-tsconfig.d.ts +9 -0
  126. package/dist/application-spec/parse-application-files/categorize/earlier-generated-tsconfig.js +1 -0
  127. package/dist/application-spec/parse-application-files/categorize/module-analysis.d.ts +1 -1
  128. package/dist/application-spec/parse-application-files/categorize/module-analysis.js +1 -1
  129. package/dist/application-spec/parse-application-files/raw-spec/raw-assistant.d.ts +16 -3
  130. package/dist/application-spec/parse-application-files/raw-spec/raw-assistant.js +1 -1
  131. package/dist/application-spec/parse-application-files/raw-spec/raw-spec-file.js +1 -1
  132. package/dist/application-spec/parse-application-files/spec/application/admin-spec/admin-spec.js +1 -1
  133. package/dist/application-spec/parse-application-files/spec/application/configurator-spec/configurator-spec.js +1 -1
  134. package/dist/application-spec/parse-application-files/spec/components/component-entry.d.ts +1 -9
  135. package/dist/application-spec/parse-application-files/spec/components/component-entry.js +1 -1
  136. package/dist/application-spec/parse-application-files/spec/components/component-filter.d.ts +1 -54
  137. package/dist/application-spec/parse-application-files/spec/components/component-filter.js +1 -1
  138. package/dist/application-spec/parse-application-files/spec/components/index.d.ts +1 -1
  139. package/dist/application-spec/parse-application-files/spec/components/index.js +1 -1
  140. package/dist/application-spec/parse-application-files/spec/expressions/expression.d.ts +1 -28
  141. package/dist/application-spec/parse-application-files/spec/expressions/expression.js +1 -1
  142. package/dist/application-spec/parse-application-files/spec/expressions/expressions.d.ts +1 -1
  143. package/dist/application-spec/parse-application-files/spec/expressions/expressions.js +1 -1
  144. package/dist/application-spec/parse-application-files/spec/expressions/index.d.ts +0 -1
  145. package/dist/application-spec/parse-application-files/spec/expressions/index.js +1 -1
  146. package/dist/application-spec/parse-application-files/spec/expressions/memo-eval-plan.js +1 -1
  147. package/dist/application-spec/parse-application-files/spec/expressions/user-expressions.js +1 -1
  148. package/dist/application-spec/parse-application-files/spec/model/defaults.d.ts +7 -2
  149. package/dist/application-spec/parse-application-files/spec/model/defaults.js +1 -1
  150. package/dist/application-spec/parse-application-files/spec/relations/reference-field-type.d.ts +25 -0
  151. package/dist/application-spec/parse-application-files/spec/relations/reference-field-type.js +1 -0
  152. package/dist/application-spec/parse-application-files/spec/relations/relation-field-mismatch.d.ts +46 -0
  153. package/dist/application-spec/parse-application-files/spec/relations/relation-field-mismatch.js +1 -0
  154. package/dist/application-spec/parse-application-files/spec/relations/relations.d.ts +4 -3
  155. package/dist/application-spec/parse-application-files/spec/relations/relations.js +1 -1
  156. package/dist/application-spec/parse-application-files/spec/sections/assistant/assistant-field-type.d.ts +3 -8
  157. package/dist/application-spec/parse-application-files/spec/sections/assistant/assistant-field-type.js +1 -1
  158. package/dist/application-spec/parse-application-files/spec/sections/assistant/assistant-schema.d.ts +9 -43
  159. package/dist/application-spec/parse-application-files/spec/sections/assistant/assistant-schema.js +1 -1
  160. package/dist/application-spec/parse-application-files/spec/sections/assistant/assistant-server-settings.d.ts +2 -2
  161. package/dist/application-spec/parse-application-files/spec/sections/assistant/assistant.d.ts +5 -21
  162. package/dist/application-spec/parse-application-files/spec/sections/infra.d.ts +2 -0
  163. package/dist/application-spec/parse-application-files/spec/sections/infra.js +1 -1
  164. package/dist/client/authorized-client.d.ts +3 -1
  165. package/dist/client/authorized-client.js +1 -1
  166. package/dist/client/contract.d.ts +34 -0
  167. package/dist/client/contract.js +1 -1
  168. package/dist/client/index.d.ts +2 -2
  169. package/dist/client/index.js +1 -1
  170. package/dist/client/local-authorized-client.d.ts +3 -1
  171. package/dist/client/local-authorized-client.js +1 -1
  172. package/dist/client/memory-authorized-client.d.ts +3 -1
  173. package/dist/client/memory-authorized-client.js +1 -1
  174. package/dist/client/phoenix-api.d.ts +367 -30
  175. package/dist/configurator/application-runtime/extensions/create-configurator-extensions.js +1 -1
  176. package/dist/configurator/application-runtime/extensions/selectors.d.ts +3 -1
  177. package/dist/configurator/application-runtime/extensions/selectors.js +1 -1
  178. package/dist/configurator/application-runtime/extensions/systems/assistant-system/assistant-system.d.ts +121 -3
  179. package/dist/configurator/application-runtime/extensions/systems/assistant-system/assistant-system.js +1 -1
  180. package/dist/configurator/application-runtime/extensions/systems/assistant-system/graphql-tools.d.ts +7 -1
  181. package/dist/configurator/application-runtime/extensions/systems/assistant-system/graphql-tools.js +1 -1
  182. package/dist/configurator/application-runtime/extensions/systems/drag-and-drop-system/drag-and-drop-system.d.ts +3 -3
  183. package/dist/configurator/application-runtime/extensions/systems/graphql-system/entity-meta.js +1 -1
  184. package/dist/configurator/application-runtime/extensions/systems/graphql-system/graphql-system.d.ts +20 -4
  185. package/dist/configurator/application-runtime/extensions/systems/graphql-system/graphql-system.js +1 -1
  186. package/dist/configurator/application-runtime/extensions/systems/graphql-system/inject-assistant-lenses.d.ts +11 -0
  187. package/dist/configurator/application-runtime/extensions/systems/graphql-system/inject-assistant-lenses.js +1 -0
  188. package/dist/configurator/application-runtime/extensions/systems/index.d.ts +1 -1
  189. package/dist/configurator/application-runtime/extensions/systems/layout-system/layout-system.d.ts +2 -2
  190. package/dist/configurator/application-runtime/extensions/systems/layout-system/layout-system.js +1 -1
  191. package/dist/configurator/common/configurator-interface.d.ts +26 -1
  192. package/dist/configurator/common/configurator-interface.js +1 -1
  193. package/dist/configurator/common/frontend-analytics.d.ts +2 -0
  194. package/dist/configurator/common/frontend-analytics.js +1 -1
  195. package/dist/configurator/common/index.d.ts +2 -0
  196. package/dist/configurator/common/index.js +1 -1
  197. package/dist/configurator/common/use-finalize-action.d.ts +31 -0
  198. package/dist/configurator/common/use-finalize-action.js +1 -0
  199. package/dist/configurator/common/use-reset-camera.d.ts +6 -0
  200. package/dist/configurator/common/use-reset-camera.js +1 -0
  201. package/dist/configurator/configurator-context/configurator-hooks/layout-hooks.d.ts +1 -1
  202. package/dist/configurator/pages/DefaultConfiguratorLayout.d.ts +6 -0
  203. package/dist/configurator/pages/DefaultConfiguratorLayout.js +1 -0
  204. package/dist/configurator/pages/LoadedConfiguratorDetailPage.js +1 -1
  205. package/dist/configurator/pages/configurator-layout-name.d.ts +2 -0
  206. package/dist/configurator/pages/configurator-layout-name.js +1 -0
  207. package/dist/configurator/pages/default-configurator-elements.d.ts +7 -0
  208. package/dist/configurator/pages/default-configurator-elements.js +1 -0
  209. package/dist/configurator/pages/index.d.ts +1 -0
  210. package/dist/configurator/pages/index.js +1 -1
  211. package/dist/configurator/scene/scene-controls/hotspot-drag-handle/HotspotDragHandle.d.ts +1 -1
  212. package/dist/configurator/scene/scene-controls/hotspot-drag-handle/HotspotDragSceneHandle.d.ts +1 -1
  213. package/dist/configurator/scene/scene-entity/dimension-indicators/DimensionIndicator.d.ts +1 -1
  214. package/dist/configurator/scene/scene-entity/dimension-indicators/DimensionIndicatorInternal.d.ts +1 -1
  215. package/dist/configurator/scene/scene-entity/drag-and-drop/shared.d.ts +2 -2
  216. package/dist/configurator/scene/scene-entity/drag-and-drop/use-drag-object.d.ts +1 -1
  217. package/dist/configurator/scene/scene-entity/materials/RemoteReplacedMaterial.js +1 -1
  218. package/dist/configurator/scene/scene-entity/objects/SceneEntityObjectTextDecal.d.ts +1 -1
  219. package/dist/configurator/ui/assistant/AssistantChips.d.ts +8 -2
  220. package/dist/configurator/ui/assistant/AssistantChips.js +1 -1
  221. package/dist/configurator/ui/assistant/AssistantComposer.d.ts +2 -1
  222. package/dist/configurator/ui/assistant/AssistantComposer.js +1 -1
  223. package/dist/configurator/ui/assistant/AssistantMarkdown.d.ts +1 -1
  224. package/dist/configurator/ui/assistant/AssistantMarkdown.js +1 -1
  225. package/dist/configurator/ui/assistant/AssistantThread.d.ts +6 -2
  226. package/dist/configurator/ui/assistant/AssistantThread.js +1 -1
  227. package/dist/configurator/ui/assistant/entity-link/AssistantEntityLink.d.ts +13 -0
  228. package/dist/configurator/ui/assistant/entity-link/AssistantEntityLink.js +1 -0
  229. package/dist/configurator/ui/assistant/entity-link/entity-link-selection.d.ts +22 -0
  230. package/dist/configurator/ui/assistant/entity-link/entity-link-selection.js +1 -0
  231. package/dist/configurator/ui/assistant/entity-link/entity-link-state.d.ts +27 -0
  232. package/dist/configurator/ui/assistant/entity-link/entity-link-state.js +1 -0
  233. package/dist/configurator/ui/assistant/entity-link/entity-link-target.d.ts +5 -0
  234. package/dist/configurator/ui/assistant/entity-link/entity-link-target.js +1 -0
  235. package/dist/configurator/ui/assistant/entity-link/index.d.ts +3 -0
  236. package/dist/configurator/ui/assistant/entity-link/index.js +1 -0
  237. package/dist/configurator/ui/assistant/thread-items.d.ts +13 -2
  238. package/dist/configurator/ui/assistant/thread-items.js +1 -1
  239. package/dist/configurator/ui/configurator-layout/sidebar-keys/index.d.ts +1 -0
  240. package/dist/configurator/ui/configurator-layout/sidebar-keys/index.js +1 -0
  241. package/dist/configurator/ui/configurator-layout/sidebar-keys/sidebar-keys.d.ts +11 -0
  242. package/dist/configurator/ui/configurator-layout/sidebar-keys/sidebar-keys.js +1 -0
  243. package/dist/configurator/ui/configurator-layout/slots/desktop-sidebar/DesktopSidebar.d.ts +101 -0
  244. package/dist/configurator/ui/configurator-layout/slots/desktop-sidebar/DesktopSidebar.js +16 -0
  245. package/dist/configurator/ui/configurator-layout/slots/desktop-sidebar/index.d.ts +1 -0
  246. package/dist/configurator/ui/configurator-layout/slots/desktop-sidebar/index.js +1 -0
  247. package/dist/configurator/ui/configurator-layout/slots/services/InvariantViolations.d.ts +4 -4
  248. package/dist/configurator/ui/configurator-layout/slots/services/InvariantViolations.js +1 -1
  249. package/dist/configurator/ui/configurator-layout/slots/services/SideEffects.d.ts +3 -6
  250. package/dist/configurator/ui/configurator-layout/slots/services/SideEffects.js +1 -1
  251. package/dist/configurator/ui/configurator-layout/slots/slots.d.ts +1 -0
  252. package/dist/configurator/ui/configurator-layout/slots/slots.js +1 -1
  253. package/dist/configurator/ui/configurator-layout/universal/DesktopLayout.d.ts +0 -74
  254. package/dist/configurator/ui/configurator-layout/universal/DesktopLayout.js +5 -20
  255. package/dist/configurator/ui/configurator-layout/universal/DesktopPreview.js +1 -1
  256. package/dist/configurator/ui/configurator-layout/universal/MobileLayout.js +4 -4
  257. package/dist/configurator/ui/configurator-layout/universal/MobilePreview.js +1 -1
  258. package/dist/configurator/ui/configurator-layout/universal/use-layout-scene-safe-area.d.ts +47 -0
  259. package/dist/configurator/ui/configurator-layout/universal/use-layout-scene-safe-area.js +1 -0
  260. package/dist/configurator/ui/configurator-layout/universal/use-scene-safe-area.d.ts +11 -26
  261. package/dist/configurator/ui/configurator-layout/universal/use-scene-safe-area.js +1 -1
  262. package/dist/configurator/ui/legacy/layout/steps/StepsNavigation.d.ts +2 -2
  263. package/dist/configurator/ui/phoenix-layout-elements/header/common/step-navigation/StepsNavigation.d.ts +2 -2
  264. package/dist/docs/complex-use-cases/filtered-controls-with-fix-dialog.mdx +100 -117
  265. package/dist/docs/complex-use-cases/navigation-reset-selection.mdx +18 -12
  266. package/dist/docs/complex-use-cases/sketching.mdx +0 -38
  267. package/dist/docs/controls/select-attribute/cardselect.mdx +9 -13
  268. package/dist/docs/dimensions/3d-scene-integration/dimension-indicators.mdx +2 -2
  269. package/dist/docs/dimensions/3d-scene-integration/editable-angle-indicator.mdx +1 -1
  270. package/dist/docs/dimensions/3d-scene-integration/editable-distance-dimension-indicator.mdx +1 -1
  271. package/dist/docs/dimensions/3d-scene-integration/list-selector-dimension-indicator.mdx +1 -1
  272. package/dist/docs/drag-and-drop/drag-handle.mdx +1 -1
  273. package/dist/docs/drag-and-drop/hotspot-handle.mdx +1 -1
  274. package/dist/docs/drag-and-drop/planes.mdx +1 -1
  275. package/dist/docs/drag-and-drop/rotatable.mdx +2 -2
  276. package/dist/docs/index.json +42 -1
  277. package/dist/docs/integrations/woocommerce/local-development.mdx +1 -1
  278. package/dist/docs/layouts/custom-layout.mdx +2125 -0
  279. package/dist/docs/layouts/custom-price.mdx +14 -16
  280. package/dist/docs/layouts/header/fixed.mdx +2 -2
  281. package/dist/docs/layouts/header/floating.mdx +2 -2
  282. package/dist/docs/layouts/sidebar/in-a-custom-layout.mdx +380 -0
  283. package/dist/docs/layouts/sidebar/tabs.mdx +24 -21
  284. package/dist/docs/layouts/sidebar-footer/basic.mdx +32 -77
  285. package/dist/docs/other-features/client-side-rendering/declarative.mdx +1 -1
  286. package/dist/docs/other-features/domain-actions.mdx +1 -1
  287. package/dist/docs/other-features/side-effects.mdx +50 -45
  288. package/dist/docs/other-features/transformers.mdx +5 -1
  289. package/dist/docs/other-features/violation-messages.mdx +52 -56
  290. package/dist/docs/phoenix/admin.mdx +9 -24
  291. package/dist/docs/phoenix/application-states.mdx +9 -7
  292. package/dist/docs/phoenix/configurator-interface.mdx +237 -80
  293. package/dist/docs/phoenix/deployments.mdx +3 -7
  294. package/dist/docs/phoenix/domain-model.mdx +4 -0
  295. package/dist/docs/phoenix/expression-context.mdx +11 -3
  296. package/dist/docs/phoenix/finalization.mdx +1 -1
  297. package/dist/docs/phoenix/getting-started.mdx +2 -1
  298. package/dist/docs/phoenix/layout-slots.mdx +116 -0
  299. package/dist/docs/phoenix/localization.mdx +7 -26
  300. package/dist/docs/phoenix/migration-guide.mdx +19 -8
  301. package/dist/docs/phoenix/phoenix-cli.mdx +87 -55
  302. package/dist/docs/phoenix/project-structure.mdx +43 -15
  303. package/dist/docs/phoenix/quickstart.mdx +2 -2
  304. package/dist/docs/phoenix/sdk-builder-workflow.mdx +9 -9
  305. package/dist/docs/phoenix/testing.mdx +140 -0
  306. package/dist/docs/phoenix/webhook-membership.mdx +10 -9
  307. package/dist/docs/phoenix/webhooks.mdx +23 -6
  308. package/dist/docs/recipes-and-delete/recipe-hierarchy-selection.mdx +15 -13
  309. package/dist/docs/relations/hierarchy.mdx +13 -2
  310. package/dist/docs/ux-guidelines/choosing-a-control.mdx +11 -0
  311. package/dist/domain/admin-domain/__generated/enhanced-model.d.ts +1 -2
  312. package/dist/domain/admin-domain/__generated/model/versions/v1.d.ts +1 -1
  313. package/dist/domain/admin-domain/__generated/model/versions/v2.d.ts +1 -1
  314. package/dist/domain/admin-domain/__generated/model/versions/v3.d.ts +1 -1
  315. package/dist/domain/admin-domain/__generated/model/versions/v4.d.ts +1 -1
  316. package/dist/domain/admin-domain/__generated/model/versions/v5.d.ts +1 -1
  317. package/dist/domain/admin-domain/__generated/model/versions/v6.d.ts +2 -2
  318. package/dist/domain/admin-domain/__generated/model/versions/v6.js +1 -1
  319. package/dist/domain/admin-domain/implementation/common-admin-expressions.d.ts +26 -14
  320. package/dist/domain/admin-domain/implementation/common-admin-migrations.d.ts +1 -1
  321. package/dist/domain/admin-domain/implementation/common-admin-publish.d.ts +1 -2
  322. package/dist/domain/admin-domain/index.d.ts +9 -5
  323. package/dist/domain/admin-domain/index.js +1 -1
  324. package/dist/domain/application/GetApplicationWrapperHandler.d.ts +2 -2
  325. package/dist/domain/application/GetThemeHandler.d.ts +1 -1
  326. package/dist/domain/application/GetWebComponentOptions.d.ts +1 -1
  327. package/dist/domain/application/admin-page-factories.d.ts +1 -2
  328. package/dist/domain/application/application-config.d.ts +30 -97
  329. package/dist/domain/application/assistant/assistant-fields.d.ts +12 -0
  330. package/dist/domain/application/assistant/assistant-fields.js +1 -0
  331. package/dist/domain/application/assistant/assistant-manifest.d.ts +71 -0
  332. package/dist/domain/application/assistant/assistant-resolved-manifest.d.ts +131 -0
  333. package/dist/domain/application/assistant/assistant-resolved-manifest.js +1 -0
  334. package/dist/domain/application/assistant/assistant-value-type.d.ts +9 -0
  335. package/dist/domain/application/assistant/assistant-value-type.js +1 -0
  336. package/dist/domain/application/assistant/build-assistant-lenses.d.ts +14 -0
  337. package/dist/domain/application/assistant/build-assistant-lenses.js +5 -0
  338. package/dist/domain/application/assistant/build-assistant-manifest.d.ts +4 -0
  339. package/dist/domain/application/assistant/build-assistant-manifest.js +1 -0
  340. package/dist/domain/application/assistant/create-assistant-execution-schema.d.ts +32 -0
  341. package/dist/domain/application/assistant/create-assistant-execution-schema.js +1 -0
  342. package/dist/domain/application/assistant/generate-assistant-prompt.d.ts +3 -0
  343. package/dist/domain/application/assistant/generate-assistant-prompt.js +1 -0
  344. package/dist/domain/application/assistant/index.d.ts +9 -0
  345. package/dist/domain/application/assistant/index.js +1 -0
  346. package/dist/domain/application/assistant/session-setup/AssistantSetupHandler.d.ts +20 -0
  347. package/dist/domain/application/assistant/session-setup/AssistantSetupHandler.js +1 -0
  348. package/dist/domain/application/assistant/session-setup/apply-assistant-setup.d.ts +10 -0
  349. package/dist/domain/application/assistant/session-setup/apply-assistant-setup.js +1 -0
  350. package/dist/domain/application/assistant/session-setup/assistant-setup-manifest.d.ts +48 -0
  351. package/dist/domain/application/assistant/session-setup/assistant-setup-manifest.js +1 -0
  352. package/dist/domain/application/assistant/session-setup/create-session-assistant.d.ts +15 -0
  353. package/dist/domain/application/assistant/session-setup/create-session-assistant.js +1 -0
  354. package/dist/domain/application/assistant/session-setup/index.d.ts +4 -0
  355. package/dist/domain/application/assistant/session-setup/index.js +1 -0
  356. package/dist/domain/application/assistant-field-options.d.ts +2 -3
  357. package/dist/domain/application/assistant-mutations.d.ts +3 -5
  358. package/dist/domain/application/assistant-mutations.js +1 -1
  359. package/dist/domain/application/assistant-recipe-groups.d.ts +3 -7
  360. package/dist/domain/application/configurator-builder.d.ts +36 -18
  361. package/dist/domain/application/configurator-builder.js +1 -1
  362. package/dist/domain/application/create-initial-published-data.d.ts +6 -7
  363. package/dist/domain/application/index.d.ts +3 -6
  364. package/dist/domain/application/index.js +1 -1
  365. package/dist/domain/application/published-data/DataRowValidatorHandler.d.ts +1 -1
  366. package/dist/domain/application/published-data/FilterPublishedChunksHandler.d.ts +1 -1
  367. package/dist/domain/application/published-data/MapPublishedChunkedDataHandler.d.ts +1 -1
  368. package/dist/domain/application/published-data/MapPublishedRevisionDataHandler.d.ts +1 -1
  369. package/dist/domain/application/published-data/SheetValidatorHandler.d.ts +1 -1
  370. package/dist/domain/application/published-data/build-legend-data.d.ts +1 -1
  371. package/dist/domain/application/published-data/create-finalize-admin-domain.d.ts +1 -2
  372. package/dist/domain/application/published-data/format-field-type.d.ts +1 -1
  373. package/dist/domain/application/published-data/map-data-to-sheet.d.ts +1 -1
  374. package/dist/domain/application/published-data/map-published-chunked-data.d.ts +3 -3
  375. package/dist/domain/application/published-data/map-published-data.d.ts +7 -4
  376. package/dist/domain/application/published-data/validate-sheet-data.d.ts +1 -1
  377. package/dist/domain/available-system-components.js +1 -1
  378. package/dist/domain/core/action/action-factory.d.ts +11 -0
  379. package/dist/domain/core/{action.d.ts → action/action.d.ts} +22 -18
  380. package/dist/domain/core/action/index.d.ts +2 -0
  381. package/dist/domain/core/action/index.js +1 -0
  382. package/dist/domain/{components → core/component}/component-reader-types.d.ts +1 -2
  383. package/dist/domain/{components → core/component}/debug-state-component.d.ts +1 -1
  384. package/dist/domain/core/component/debug-state-component.js +1 -0
  385. package/dist/domain/core/component/domain-component-optic.d.ts +65 -0
  386. package/dist/domain/core/component/domain-component-optic.js +16 -0
  387. package/dist/domain/{components → core/component}/drag-state-component.d.ts +1 -1
  388. package/dist/domain/core/component/drag-state-component.js +1 -0
  389. package/dist/domain/{components → core/component}/export-state-component.d.ts +1 -1
  390. package/dist/domain/core/component/export-state-component.js +1 -0
  391. package/dist/domain/{components → core/component}/fullscreen-state-component.d.ts +1 -1
  392. package/dist/domain/core/component/fullscreen-state-component.js +1 -0
  393. package/dist/domain/{components → core/component}/group-components-by-entity-id-and-name.d.ts +1 -2
  394. package/dist/domain/core/component/group-components-by-entity-id-and-name.js +1 -0
  395. package/dist/domain/{components → core/component}/hover-state-component.d.ts +1 -1
  396. package/dist/domain/core/component/hover-state-component.js +1 -0
  397. package/dist/domain/core/component/index.d.ts +18 -0
  398. package/dist/domain/core/component/index.js +1 -0
  399. package/dist/domain/{components → core/component}/legacy-filter.d.ts +4 -19
  400. package/dist/domain/{components → core/component}/navigation-state-component.d.ts +1 -1
  401. package/dist/domain/core/component/navigation-state-component.js +1 -0
  402. package/dist/domain/{components → core/component}/selection-state-component.d.ts +1 -1
  403. package/dist/domain/core/component/selection-state-component.js +1 -0
  404. package/dist/domain/{components → core/component}/system-component-builder.d.ts +1 -2
  405. package/dist/domain/core/component/system-component-builder.js +1 -0
  406. package/dist/domain/{components → core/component}/system-component-filter.d.ts +38 -20
  407. package/dist/domain/core/component/system-virtual-entity.js +1 -0
  408. package/dist/domain/{components → core/component}/tool-state-component.d.ts +1 -1
  409. package/dist/domain/core/component/tool-state-component.js +1 -0
  410. package/dist/domain/{components → core/component}/updates.d.ts +1 -2
  411. package/dist/domain/{components → core/component}/view-state-component.d.ts +1 -1
  412. package/dist/domain/core/component/view-state-component.js +1 -0
  413. package/dist/domain/{components → core/component}/viewport-state-component.d.ts +1 -1
  414. package/dist/domain/core/component/viewport-state-component.js +1 -0
  415. package/dist/domain/core/data-schema/data-cell-value.d.ts +4 -0
  416. package/dist/domain/core/data-schema/data-schema-array-field.d.ts +5 -0
  417. package/dist/domain/core/data-schema/data-schema-field-object.d.ts +4 -0
  418. package/dist/domain/core/data-schema/data-schema-field.d.ts +2 -0
  419. package/dist/domain/core/data-schema/data-schema-field.js +1 -0
  420. package/dist/domain/core/data-schema/data-schema-localized-field.d.ts +4 -0
  421. package/dist/domain/core/data-schema/data-schema-localized-field.js +1 -0
  422. package/dist/domain/core/data-schema/data-schema-primitive-field.d.ts +5 -0
  423. package/dist/domain/core/data-schema/data-schema-primitive-field.js +1 -0
  424. package/dist/domain/core/data-schema/data-schema.d.ts +2 -0
  425. package/dist/domain/core/data-schema/data-schema.js +1 -0
  426. package/dist/domain/core/data-schema/index.d.ts +7 -0
  427. package/dist/domain/core/data-schema/index.js +1 -0
  428. package/dist/domain/core/decoder/create-decoder.d.ts +6 -0
  429. package/dist/domain/core/decoder/create-decoder.js +1 -0
  430. package/dist/domain/core/decoder/decoder.d.ts +6 -0
  431. package/dist/domain/core/decoder/decoder.js +1 -0
  432. package/dist/domain/core/decoder/index.d.ts +2 -0
  433. package/dist/domain/core/decoder/index.js +1 -0
  434. package/dist/domain/core/domain-factory.d.ts +4 -5
  435. package/dist/domain/core/domain-factory.js +1 -1
  436. package/dist/domain/core/domain.d.ts +4 -5
  437. package/dist/domain/core/domain.js +1 -1
  438. package/dist/domain/core/emission/index.d.ts +8 -0
  439. package/dist/domain/core/emission/index.js +1 -0
  440. package/dist/domain/core/emission/reset-state-emission.d.ts +12 -0
  441. package/dist/domain/core/emission/reset-state-emission.js +1 -0
  442. package/dist/domain/core/emission/state-emission.d.ts +4 -0
  443. package/dist/domain/core/emission/state-emission.js +1 -0
  444. package/dist/domain/core/emission/state-update-emission.d.ts +14 -0
  445. package/dist/domain/core/emission/state-update-emission.js +1 -0
  446. package/dist/domain/core/emission/state-validation-result.d.ts +18 -0
  447. package/dist/domain/core/emission/state-validation-result.js +1 -0
  448. package/dist/domain/core/emission/transformation-log.d.ts +2 -0
  449. package/dist/domain/core/emission/transformation-log.js +1 -0
  450. package/dist/domain/core/emission/transformer-log-entry.d.ts +6 -0
  451. package/dist/domain/core/emission/transformer-log-entry.js +1 -0
  452. package/dist/domain/core/emission/transformer-log.d.ts +11 -0
  453. package/dist/domain/core/emission/transformer-log.js +1 -0
  454. package/dist/domain/core/emission/transformer-phase.d.ts +1 -0
  455. package/dist/domain/core/emission/transformer-phase.js +1 -0
  456. package/dist/domain/core/expression/aliased-expressions.d.ts +10 -0
  457. package/dist/domain/core/expression/aliased-expressions.js +1 -0
  458. package/dist/domain/core/expression/constant-expressions.d.ts +16 -0
  459. package/dist/domain/core/expression/constant-expressions.js +1 -0
  460. package/dist/domain/core/expression/custom-expression.d.ts +25 -0
  461. package/dist/domain/core/expression/custom-expression.js +1 -0
  462. package/dist/domain/core/expression/expression.d.ts +46 -0
  463. package/dist/domain/core/expression/expression.js +1 -0
  464. package/dist/domain/core/expression/index.d.ts +4 -0
  465. package/dist/domain/core/expression/index.js +1 -0
  466. package/dist/domain/core/index.d.ts +13 -17
  467. package/dist/domain/core/index.js +1 -1
  468. package/dist/domain/{invariants → core/invariant}/builtin-invariant.d.ts +2 -2
  469. package/dist/domain/core/invariant/custom-invariants.d.ts +13 -0
  470. package/dist/domain/core/invariant/custom-invariants.js +1 -0
  471. package/dist/domain/core/invariant/index.d.ts +5 -0
  472. package/dist/domain/core/invariant/index.js +1 -0
  473. package/dist/domain/core/invariant/invariants.d.ts +10 -0
  474. package/dist/domain/core/invariant/invariants.js +1 -0
  475. package/dist/domain/core/invariant/violation-component.js +1 -0
  476. package/dist/domain/{invariants → core/invariant}/violation.d.ts +52 -4
  477. package/dist/domain/core/invariant/violation.js +1 -0
  478. package/dist/domain/core/{component.d.ts → model/component.d.ts} +1 -1
  479. package/dist/domain/core/model/index.d.ts +6 -0
  480. package/dist/domain/core/model/index.js +1 -0
  481. package/dist/domain/core/{model.d.ts → model/model.d.ts} +1 -1
  482. package/dist/domain/core/{reflection.d.ts → model/reflection.d.ts} +1 -1
  483. package/dist/domain/core/model/reflection.js +1 -0
  484. package/dist/domain/core/recipe/index.d.ts +1 -0
  485. package/dist/domain/core/recipe/index.js +1 -0
  486. package/dist/domain/core/recipe/recipes.d.ts +23 -0
  487. package/dist/domain/core/recipe/recipes.js +1 -0
  488. package/dist/domain/core/relation/all-of-type-relation.d.ts +19 -0
  489. package/dist/domain/core/relation/all-of-type-relation.js +1 -0
  490. package/dist/domain/{relations → core/relation}/component-factories.d.ts +1 -2
  491. package/dist/domain/core/relation/component-factories.js +1 -0
  492. package/dist/domain/{relations → core/relation}/composed-of.d.ts +1 -1
  493. package/dist/domain/core/relation/composed-of.js +1 -0
  494. package/dist/domain/core/relation/direct-relation.d.ts +17 -0
  495. package/dist/domain/core/relation/index.d.ts +8 -0
  496. package/dist/domain/core/relation/index.js +1 -0
  497. package/dist/domain/core/relation/indirect-relation.d.ts +25 -0
  498. package/dist/domain/core/relation/indirect-relation.js +1 -0
  499. package/dist/domain/{relations → core/relation}/reference-component.d.ts +4 -5
  500. package/dist/domain/core/relation/reference-component.js +1 -0
  501. package/dist/domain/{relations → core/relation}/reference-field.d.ts +1 -1
  502. package/dist/domain/core/relation/reference-field.js +1 -0
  503. package/dist/domain/core/relation/relation-factory.d.ts +22 -0
  504. package/dist/domain/core/relation/relation-factory.js +1 -0
  505. package/dist/domain/core/schema/enhanced-json-schema.js +1 -0
  506. package/dist/domain/core/schema/extended-schema-validator.js +1 -0
  507. package/dist/domain/core/schema/index.d.ts +3 -0
  508. package/dist/domain/core/schema/index.js +1 -0
  509. package/dist/domain/core/schema/schema-validator.js +1 -0
  510. package/dist/domain/core/state/id-sequence.d.ts +15 -0
  511. package/dist/domain/core/state/id-sequence.js +1 -0
  512. package/dist/domain/core/state/index.d.ts +3 -0
  513. package/dist/domain/core/state/index.js +1 -0
  514. package/dist/domain/core/{migrations.d.ts → state/migrations.d.ts} +15 -47
  515. package/dist/domain/core/state/migrations.js +1 -0
  516. package/dist/domain/core/{state.d.ts → state/state.d.ts} +2 -3
  517. package/dist/domain/domain-builder.d.ts +11 -11
  518. package/dist/domain/domain-builder.js +1 -1
  519. package/dist/domain/domain-context/action-system/action-system.d.ts +2 -4
  520. package/dist/domain/domain-context/action-system/action-system.js +1 -1
  521. package/dist/domain/domain-context/action-system/index.d.ts +1 -0
  522. package/dist/domain/domain-context/action-system/index.js +1 -0
  523. package/dist/domain/domain-context/analytics-system/index.d.ts +2 -0
  524. package/dist/domain/domain-context/analytics-system/index.js +1 -0
  525. package/dist/domain/domain-context/create-transformer.d.ts +2 -2
  526. package/dist/domain/domain-context/dimension-system/dimension-state.js +1 -1
  527. package/dist/domain/domain-context/dimension-system/dimension-system.d.ts +3 -4
  528. package/dist/domain/domain-context/dimension-system/dimension-system.js +1 -1
  529. package/dist/domain/domain-context/dimension-system/index.d.ts +1 -0
  530. package/dist/domain/domain-context/dimension-system/index.js +1 -0
  531. package/dist/domain/domain-context/domain-context-systems.d.ts +8 -10
  532. package/dist/domain/domain-context/index.d.ts +8 -18
  533. package/dist/domain/domain-context/index.js +1 -1
  534. package/dist/domain/domain-context/navigation-system/index.d.ts +3 -0
  535. package/dist/domain/domain-context/navigation-system/index.js +1 -0
  536. package/dist/domain/domain-context/navigation-system/navigation-system.d.ts +5 -8
  537. package/dist/domain/domain-context/navigation-system/navigation-system.js +1 -1
  538. package/dist/domain/domain-context/navigation-system/navigation-updates.d.ts +1 -12
  539. package/dist/domain/domain-context/navigation-system/navigation-updates.js +1 -1
  540. package/dist/domain/domain-context/navigation-system/selection-transformers.d.ts +2 -2
  541. package/dist/domain/domain-context/navigation-system/selection-transformers.js +1 -1
  542. package/dist/domain/domain-context/recipe-system/index.d.ts +1 -0
  543. package/dist/domain/domain-context/recipe-system/index.js +1 -0
  544. package/dist/domain/domain-context/recipe-system/recipe-cooker-system.d.ts +2 -4
  545. package/dist/domain/domain-context/recipe-system/recipe-cooker-system.js +1 -1
  546. package/dist/domain/domain-context/relation-transformers/cascade-deletes.d.ts +3 -3
  547. package/dist/domain/domain-context/relation-transformers/cascade-deletes.js +1 -1
  548. package/dist/domain/domain-context/relation-transformers/cascade-ref-pruning.d.ts +3 -3
  549. package/dist/domain/domain-context/relation-transformers/cascade-ref-pruning.js +1 -1
  550. package/dist/domain/domain-context/relation-transformers/create-entity-refs.d.ts +3 -3
  551. package/dist/domain/domain-context/relation-transformers/create-entity-refs.js +2 -2
  552. package/dist/domain/domain-context/relation-transformers/index.d.ts +4 -0
  553. package/dist/domain/domain-context/relation-transformers/index.js +1 -0
  554. package/dist/domain/domain-context/relation-transformers/replace-refs.d.ts +3 -3
  555. package/dist/domain/domain-context/relation-transformers/replace-refs.js +1 -1
  556. package/dist/domain/domain-context/store-system/apply-updates.d.ts +1 -3
  557. package/dist/domain/domain-context/store-system/apply-updates.js +1 -1
  558. package/dist/domain/domain-context/store-system/index.d.ts +4 -0
  559. package/dist/domain/domain-context/store-system/index.js +1 -0
  560. package/dist/domain/domain-context/store-system/next-domain-entity-id.d.ts +1 -13
  561. package/dist/domain/domain-context/store-system/next-domain-entity-id.js +1 -1
  562. package/dist/domain/domain-context/store-system/reconcile-projected-entities.d.ts +1 -2
  563. package/dist/domain/domain-context/store-system/reconcile-projected-entities.js +1 -1
  564. package/dist/domain/domain-context/store-system/store-system.d.ts +2 -39
  565. package/dist/domain/domain-context/store-system/store-system.js +2 -2
  566. package/dist/domain/domain-context/store-system/system-state.d.ts +2 -4
  567. package/dist/domain/domain-context/store-system/system-state.js +1 -1
  568. package/dist/domain/domain-context/transformers/actions-builder.d.ts +1 -2
  569. package/dist/domain/domain-context/transformers/actions-builder.js +1 -1
  570. package/dist/domain/domain-context/transformers/auto-snap-transformer.d.ts +6 -10
  571. package/dist/domain/domain-context/transformers/auto-snap-transformer.js +1 -1
  572. package/dist/domain/domain-context/transformers/chain-builder.d.ts +3 -3
  573. package/dist/domain/domain-context/transformers/context.d.ts +2 -7
  574. package/dist/domain/domain-context/transformers/context.js +1 -1
  575. package/dist/domain/domain-context/transformers/entity-builder.d.ts +1 -5
  576. package/dist/domain/domain-context/transformers/entity-builder.js +1 -1
  577. package/dist/domain/domain-context/transformers/index.d.ts +1 -1
  578. package/dist/domain/domain-context/transformers/index.js +1 -1
  579. package/dist/domain/domain-context/transformers/then-builder.d.ts +1 -2
  580. package/dist/domain/domain-context/transformers/then-builder.js +1 -1
  581. package/dist/domain/domain-context/transformers/when-builder.d.ts +3 -9
  582. package/dist/domain/domain-context/transformers/when-builder.js +1 -1
  583. package/dist/domain/domain-context/undo-system.d.ts +29 -3
  584. package/dist/domain/domain-context/undo-system.js +1 -1
  585. package/dist/domain/domain-runtime/access/selectors.d.ts +9 -0
  586. package/dist/domain/domain-runtime/access/selectors.js +1 -1
  587. package/dist/domain/domain-runtime/access/types.d.ts +2 -0
  588. package/dist/domain/domain-runtime/access/types.js +1 -1
  589. package/dist/domain/domain-runtime/domain-context/action-context.d.ts +11 -0
  590. package/dist/domain/domain-runtime/domain-context/action-context.js +1 -0
  591. package/dist/domain/domain-runtime/domain-context/component-reader.d.ts +1 -4
  592. package/dist/domain/domain-runtime/domain-context/component-reader.js +1 -1
  593. package/dist/domain/domain-runtime/domain-context/domain-context.js +1 -1
  594. package/dist/domain/domain-runtime/domain-context/expression-context.d.ts +8 -0
  595. package/dist/domain/domain-runtime/domain-context/expression-context.js +1 -0
  596. package/dist/domain/domain-runtime/domain-context/index.d.ts +3 -0
  597. package/dist/domain/domain-runtime/domain-context/runtime-expression-context.d.ts +18 -0
  598. package/dist/domain/domain-runtime/domain-context/runtime-expression-context.js +1 -0
  599. package/dist/domain/domain-runtime/domain-context/selectors.d.ts +19 -25
  600. package/dist/domain/domain-runtime/domain-context/selectors.js +1 -1
  601. package/dist/domain/domain-runtime/domain-context/types.d.ts +4 -1
  602. package/dist/domain/domain-runtime/domain-runtime.d.ts +88 -72
  603. package/dist/domain/domain-runtime/errors/implementation-error-collector.d.ts +19 -0
  604. package/dist/domain/domain-runtime/errors/implementation-error-collector.js +1 -0
  605. package/dist/domain/domain-runtime/errors/implementation-error.d.ts +46 -0
  606. package/dist/domain/domain-runtime/errors/implementation-error.js +1 -0
  607. package/dist/domain/domain-runtime/errors/implementation-errors.d.ts +13 -0
  608. package/dist/domain/domain-runtime/errors/implementation-errors.js +1 -0
  609. package/dist/domain/domain-runtime/errors/index.d.ts +4 -0
  610. package/dist/domain/domain-runtime/errors/index.js +1 -0
  611. package/dist/domain/domain-runtime/errors/to-implementation-errors.d.ts +10 -0
  612. package/dist/domain/domain-runtime/errors/to-implementation-errors.js +1 -0
  613. package/dist/domain/domain-runtime/index.d.ts +1 -0
  614. package/dist/domain/domain-runtime/index.js +1 -1
  615. package/dist/domain/domain-runtime/spec/create-violation-expressions.d.ts +24 -0
  616. package/dist/domain/domain-runtime/spec/create-violation-expressions.js +1 -0
  617. package/dist/domain/domain-runtime/spec/index.d.ts +5 -0
  618. package/dist/domain/domain-runtime/spec/index.js +1 -1
  619. package/dist/domain/domain-runtime/spec/initialize.d.ts +11 -0
  620. package/dist/domain/domain-runtime/spec/initialize.js +1 -1
  621. package/dist/domain/{expressions → domain-runtime/spec}/memoize-expression.d.ts +1 -2
  622. package/dist/domain/{application → domain-runtime/spec/module-checks}/element-registration.d.ts +6 -1
  623. package/dist/domain/domain-runtime/spec/module-checks/element-registration.js +1 -0
  624. package/dist/domain/{application → domain-runtime/spec/module-checks}/handler-registration.d.ts +5 -0
  625. package/dist/domain/domain-runtime/spec/module-checks/handler-registration.js +1 -0
  626. package/dist/domain/domain-runtime/spec/module-checks/index.d.ts +8 -0
  627. package/dist/domain/domain-runtime/spec/module-checks/index.js +1 -0
  628. package/dist/domain/domain-runtime/spec/module-checks/project-modules.d.ts +32 -0
  629. package/dist/domain/domain-runtime/spec/module-checks/project-modules.js +1 -0
  630. package/dist/domain/domain-runtime/spec/module-checks/resolve-action-modules.d.ts +4 -0
  631. package/dist/domain/domain-runtime/spec/module-checks/resolve-action-modules.js +1 -0
  632. package/dist/domain/domain-runtime/spec/module-checks/resolve-component-optic-modules.d.ts +4 -0
  633. package/dist/domain/domain-runtime/spec/module-checks/resolve-component-optic-modules.js +1 -0
  634. package/dist/domain/domain-runtime/spec/module-checks/resolve-expression-modules.d.ts +15 -0
  635. package/dist/domain/domain-runtime/spec/module-checks/resolve-expression-modules.js +1 -0
  636. package/dist/domain/domain-runtime/spec/module-checks/resolve-imported-transformers.d.ts +22 -0
  637. package/dist/domain/domain-runtime/spec/module-checks/resolve-imported-transformers.js +1 -0
  638. package/dist/domain/domain-runtime/spec/module-checks/resolve-invariant-modules.d.ts +6 -0
  639. package/dist/domain/domain-runtime/spec/module-checks/resolve-invariant-modules.js +1 -0
  640. package/dist/domain/{actions → domain-runtime/spec}/prepare-action-implementations.d.ts +1 -1
  641. package/dist/domain/domain-runtime/spec/prepare-action-implementations.js +5 -0
  642. package/dist/domain/{expressions → domain-runtime/spec}/prepare-domain-expressions.d.ts +1 -1
  643. package/dist/domain/domain-runtime/spec/selectors.d.ts +7 -8
  644. package/dist/domain/domain-runtime/spec/selectors.js +1 -1
  645. package/dist/domain/domain-runtime/spec/types.d.ts +8 -6
  646. package/dist/domain/{system-components → extensions}/angle-indicator.d.ts +1 -1
  647. package/dist/domain/extensions/angle-indicator.js +1 -0
  648. package/dist/domain/{system-components → extensions}/attribute-switch.d.ts +1 -1
  649. package/dist/domain/extensions/attribute-switch.js +1 -0
  650. package/dist/domain/{system-components → extensions}/autorotate-camera-component.d.ts +1 -1
  651. package/dist/domain/extensions/autorotate-camera-component.js +1 -0
  652. package/dist/domain/{system-components → extensions}/basic-sidebar-footer.d.ts +1 -1
  653. package/dist/domain/extensions/basic-sidebar-footer.js +1 -0
  654. package/dist/domain/extensions/camera-based-hidden-entity-object.js +1 -0
  655. package/dist/domain/extensions/camera-based-hidden-entity.js +1 -0
  656. package/dist/domain/{system-components → extensions}/canvas-config.d.ts +2 -2
  657. package/dist/domain/extensions/canvas-config.js +1 -0
  658. package/dist/domain/extensions/canvas-custom-environment.js +1 -0
  659. package/dist/domain/{system-components → extensions}/canvas-padding.d.ts +1 -1
  660. package/dist/domain/extensions/canvas-padding.js +1 -0
  661. package/dist/domain/{system-components → extensions}/canvas-preset-environment.d.ts +1 -1
  662. package/dist/domain/extensions/canvas-preset-environment.js +1 -0
  663. package/dist/domain/{system-components → extensions}/child-entity-recipe-hierarchy.d.ts +2 -2
  664. package/dist/domain/extensions/child-entity-recipe-hierarchy.js +1 -0
  665. package/dist/domain/{system-components → extensions}/client-side-image.d.ts +2 -2
  666. package/dist/domain/extensions/client-side-image.js +1 -0
  667. package/dist/domain/extensions/color-value.js +1 -0
  668. package/dist/domain/{system-components → extensions}/common/angle-indicator-schema.d.ts +3 -3
  669. package/dist/domain/extensions/common/angle-indicator-schema.js +1 -0
  670. package/dist/domain/{system-components → extensions}/common/dimension-indicator-schema.d.ts +3 -3
  671. package/dist/domain/extensions/common/dimension-indicator-schema.js +1 -0
  672. package/dist/domain/extensions/common/index.d.ts +4 -0
  673. package/dist/domain/extensions/common/index.js +1 -0
  674. package/dist/domain/{system-components → extensions}/custom-header.d.ts +2 -2
  675. package/dist/domain/{system-components → extensions}/custom-header.js +1 -1
  676. package/dist/domain/extensions/custom-price-footer.js +1 -0
  677. package/dist/domain/{system-components → extensions}/custom-sidebar-footer.d.ts +2 -2
  678. package/dist/domain/{system-components → extensions}/custom-sidebar-footer.js +1 -1
  679. package/dist/domain/{system-components → extensions}/dimension-indicator.d.ts +1 -1
  680. package/dist/domain/extensions/dimension-indicator.js +1 -0
  681. package/dist/domain/{system-components → extensions}/editable-angle-indicator.d.ts +4 -3
  682. package/dist/domain/extensions/editable-angle-indicator.js +1 -0
  683. package/dist/domain/{system-components → extensions}/editable-distance-dimension-indicator.d.ts +4 -3
  684. package/dist/domain/extensions/editable-distance-dimension-indicator.js +1 -0
  685. package/dist/domain/{system-components → extensions}/editable-offset-indicator.d.ts +4 -3
  686. package/dist/domain/extensions/editable-offset-indicator.js +1 -0
  687. package/dist/domain/{system-components → extensions}/editable-size-indicator.d.ts +3 -2
  688. package/dist/domain/extensions/editable-size-indicator.js +1 -0
  689. package/dist/domain/{system-components → extensions}/entity-header.d.ts +1 -1
  690. package/dist/domain/extensions/entity-header.js +1 -0
  691. package/dist/domain/{system-components → extensions}/exit-tool-mode-fab.d.ts +1 -1
  692. package/dist/domain/extensions/exit-tool-mode-fab.js +1 -0
  693. package/dist/domain/{system-components → extensions}/finalize-action.d.ts +1 -1
  694. package/dist/domain/extensions/finalize-action.js +1 -0
  695. package/dist/domain/extensions/finalize-component.js +1 -0
  696. package/dist/domain/extensions/fit-selection-orthographic-camera-component.js +1 -0
  697. package/dist/domain/extensions/fit-selection-perspective-camera-component.js +1 -0
  698. package/dist/domain/{system-components → extensions}/fixed-header.d.ts +1 -1
  699. package/dist/domain/extensions/fixed-header.js +1 -0
  700. package/dist/domain/{system-components → extensions}/floating-header.d.ts +1 -1
  701. package/dist/domain/extensions/floating-header.js +1 -0
  702. package/dist/domain/{system-components → extensions}/hidden-header.d.ts +1 -1
  703. package/dist/domain/extensions/hidden-header.js +1 -0
  704. package/dist/domain/{system-components → extensions}/hidden-sidebar-footer.d.ts +1 -1
  705. package/dist/domain/extensions/hidden-sidebar-footer.js +1 -0
  706. package/dist/domain/{system-components → extensions}/horizontal-tabs.d.ts +3 -3
  707. package/dist/domain/extensions/horizontal-tabs.js +1 -0
  708. package/dist/domain/extensions/index.d.ts +69 -0
  709. package/dist/domain/extensions/index.js +1 -0
  710. package/dist/domain/{system-components → extensions}/list-selector-dimension-indicator.d.ts +4 -3
  711. package/dist/domain/extensions/list-selector-dimension-indicator.js +1 -0
  712. package/dist/domain/extensions/multilingual-text-value.js +1 -0
  713. package/dist/domain/{system-components → extensions}/navigation-steps.d.ts +2 -2
  714. package/dist/domain/extensions/navigation-steps.js +1 -0
  715. package/dist/domain/{system-components → extensions}/offset-anchors.d.ts +1 -1
  716. package/dist/domain/extensions/offset-anchors.js +1 -0
  717. package/dist/domain/{system-components → extensions}/offset-indicator.d.ts +1 -2
  718. package/dist/domain/extensions/offset-indicator.js +1 -0
  719. package/dist/domain/{system-components → extensions}/offset.d.ts +1 -1
  720. package/dist/domain/extensions/offset.js +1 -0
  721. package/dist/domain/{system-components → extensions}/other-action.d.ts +1 -1
  722. package/dist/domain/extensions/other-action.js +1 -0
  723. package/dist/domain/{system-components → extensions}/property-page.d.ts +2 -2
  724. package/dist/domain/extensions/property-page.js +1 -0
  725. package/dist/domain/{system-components → extensions}/read-sidebar-footer.d.ts +1 -1
  726. package/dist/domain/extensions/read-sidebar-footer.js +1 -0
  727. package/dist/domain/{system-components → extensions}/replace-entity-recipe-hierarchy.d.ts +2 -2
  728. package/dist/domain/extensions/replace-entity-recipe-hierarchy.js +1 -0
  729. package/dist/domain/extensions/rotatable.js +1 -0
  730. package/dist/domain/{system-components → extensions}/rotation-handle.d.ts +2 -2
  731. package/dist/domain/extensions/rotation-handle.js +1 -0
  732. package/dist/domain/{system-components → extensions}/save-template-thumbnail.d.ts +2 -2
  733. package/dist/domain/extensions/save-template-thumbnail.js +1 -0
  734. package/dist/domain/{system-components → extensions}/scene-entity-add-fab.d.ts +1 -1
  735. package/dist/domain/extensions/scene-entity-add-fab.js +1 -0
  736. package/dist/domain/extensions/scene-entity-animation.js +1 -0
  737. package/dist/domain/extensions/scene-entity-control.js +1 -0
  738. package/dist/domain/{system-components → extensions}/scene-entity-delete-fab.d.ts +1 -1
  739. package/dist/domain/extensions/scene-entity-delete-fab.js +1 -0
  740. package/dist/domain/extensions/scene-entity-floor-object.js +1 -0
  741. package/dist/domain/{system-components → extensions}/scene-entity-html-hotspot.d.ts +1 -1
  742. package/dist/domain/extensions/scene-entity-html-hotspot.js +1 -0
  743. package/dist/domain/{system-components → extensions}/scene-entity-navigation-hotspot.d.ts +1 -1
  744. package/dist/domain/extensions/scene-entity-navigation-hotspot.js +1 -0
  745. package/dist/domain/{system-components → extensions}/scene-entity-object-html-hotspot.d.ts +1 -1
  746. package/dist/domain/extensions/scene-entity-object-html-hotspot.js +1 -0
  747. package/dist/domain/{system-components → extensions}/scene-entity-select-hotspot.d.ts +1 -1
  748. package/dist/domain/extensions/scene-entity-select-hotspot.js +1 -0
  749. package/dist/domain/extensions/scene-entity-wall-object.js +1 -0
  750. package/dist/domain/extensions/selectable-component.js +1 -0
  751. package/dist/domain/{system-components → extensions}/sidebar-tabs.d.ts +1 -1
  752. package/dist/domain/extensions/sidebar-tabs.js +1 -0
  753. package/dist/domain/extensions/simple-summary.js +1 -0
  754. package/dist/domain/{system-components → extensions}/size.d.ts +1 -1
  755. package/dist/domain/extensions/size.js +1 -0
  756. package/dist/domain/{system-components → extensions}/sketching-draw.d.ts +1 -1
  757. package/dist/domain/extensions/sketching-draw.js +1 -0
  758. package/dist/domain/{system-components → extensions}/sketching-edit.d.ts +2 -2
  759. package/dist/domain/extensions/sketching-edit.js +1 -0
  760. package/dist/domain/extensions/summary-component.js +1 -0
  761. package/dist/domain/extensions/text-value.js +1 -0
  762. package/dist/domain/extensions/tool-controls.js +1 -0
  763. package/dist/domain/{system-components → extensions}/tool-menu-fab.d.ts +2 -2
  764. package/dist/domain/extensions/tool-menu-fab.js +1 -0
  765. package/dist/domain/{system-components → extensions}/toolbar.d.ts +2 -2
  766. package/dist/domain/{system-components → extensions}/toolbar.js +1 -1
  767. package/dist/domain/{system-components → extensions}/universal-sidebar-footer.d.ts +1 -1
  768. package/dist/domain/extensions/universal-sidebar-footer.js +1 -0
  769. package/dist/domain/extensions/view-controls.js +1 -0
  770. package/dist/domain/index.d.ts +2 -32
  771. package/dist/domain/index.js +1 -1
  772. package/dist/domain/mocks/create-mock-domain-context.d.ts +1 -1
  773. package/dist/domain/mocks/create-mock-domain-runtime-services.d.ts +1 -1
  774. package/dist/domain/mocks/create-mock-domain-runtime.d.ts +30 -21
  775. package/dist/domain/mocks/create-mock-domain-runtime.js +1 -1
  776. package/dist/domain/mocks/create-mock-domain.d.ts +1 -1
  777. package/dist/domain/mocks/create-mock-domain.js +1 -1
  778. package/dist/domain/mocks/create-mock-state.d.ts +2 -2
  779. package/dist/domain/mocks/create-test-application-config.d.ts +59 -0
  780. package/dist/domain/mocks/create-test-application-config.js +1 -0
  781. package/dist/domain/mocks/index.d.ts +1 -0
  782. package/dist/domain/mocks/index.js +1 -1
  783. package/dist/domain/projections/blender-projections/blender-projections.d.ts +2 -3
  784. package/dist/domain/projections/blender-projections/blender-projections.js +1 -1
  785. package/dist/domain/projections/blender-projections/camera.d.ts +2 -2
  786. package/dist/domain/projections/collision-projections.d.ts +1 -1
  787. package/dist/domain/projections/composition-projections.d.ts +1 -1
  788. package/dist/domain/projections/composition-projections.js +1 -1
  789. package/dist/domain/projections/constraint-projections.d.ts +1 -1
  790. package/dist/domain/projections/index.d.ts +1 -1
  791. package/dist/domain/projections/position-projections.d.ts +1 -1
  792. package/dist/domain/projections/projected-entities-projections.d.ts +2 -3
  793. package/dist/domain/projections/snap-matching.d.ts +1 -2
  794. package/dist/domain/projections/snap-utils.d.ts +1 -2
  795. package/dist/domain/projections/snapping-projections.d.ts +1 -1
  796. package/dist/domain/projections/validation-projections.d.ts +3 -20
  797. package/dist/domain/projections/validation-projections.js +1 -1
  798. package/dist/domain/sketching/sketching-projections.d.ts +1 -1
  799. package/dist/domain/system-components/admin-sidebar.d.ts +1 -1
  800. package/dist/domain/system-components/admin-sidebar.js +1 -1
  801. package/dist/domain/system-components/angle-dimension.js +1 -1
  802. package/dist/domain/system-components/application-config.d.ts +3 -3
  803. package/dist/domain/system-components/application-config.js +1 -1
  804. package/dist/domain/system-components/attribute-selection.js +1 -1
  805. package/dist/domain/system-components/bounding-box-component.d.ts +1 -1
  806. package/dist/domain/system-components/bounding-box-component.js +1 -1
  807. package/dist/domain/system-components/bounding-sphere-component.d.ts +1 -1
  808. package/dist/domain/system-components/bounding-sphere-component.js +1 -1
  809. package/dist/domain/system-components/child-entity-recipes.d.ts +1 -1
  810. package/dist/domain/system-components/child-entity-recipes.js +1 -1
  811. package/dist/domain/system-components/child-entity-selection.d.ts +1 -2
  812. package/dist/domain/system-components/child-entity-selection.js +1 -1
  813. package/dist/domain/system-components/collision-box-geometry.d.ts +5 -3
  814. package/dist/domain/system-components/collision-box-geometry.js +1 -1
  815. package/dist/domain/system-components/collision-geometries.d.ts +1 -1
  816. package/dist/domain/system-components/collision-geometry.d.ts +5 -3
  817. package/dist/domain/system-components/collision-geometry.js +1 -1
  818. package/dist/domain/system-components/collision-point-geometry.d.ts +5 -3
  819. package/dist/domain/system-components/collision-point-geometry.js +1 -1
  820. package/dist/domain/system-components/common/index.d.ts +0 -4
  821. package/dist/domain/system-components/common/index.js +1 -1
  822. package/dist/domain/system-components/common/material-override-schema.d.ts +2 -2
  823. package/dist/domain/system-components/common/recipes.d.ts +21 -4
  824. package/dist/domain/system-components/common/recipes.js +1 -1
  825. package/dist/domain/system-components/constraint.d.ts +11 -24
  826. package/dist/domain/system-components/constraint.js +1 -1
  827. package/dist/domain/system-components/create-blueprint.d.ts +1 -1
  828. package/dist/domain/system-components/custom-scene-entity.d.ts +1 -1
  829. package/dist/domain/system-components/custom-scene-entity.js +1 -1
  830. package/dist/domain/system-components/detail.js +1 -1
  831. package/dist/domain/system-components/distance-dimension-select.d.ts +1 -1
  832. package/dist/domain/system-components/distance-dimension-select.js +1 -1
  833. package/dist/domain/system-components/distance-dimension.d.ts +1 -1
  834. package/dist/domain/system-components/distance-dimension.js +1 -1
  835. package/dist/domain/system-components/drag-handle.d.ts +2 -2
  836. package/dist/domain/system-components/drag-handle.js +1 -1
  837. package/dist/domain/system-components/fit-entity-orthographic-camera-component.js +1 -1
  838. package/dist/domain/system-components/fit-entity-perspective-camera-component.js +1 -1
  839. package/dist/domain/system-components/fit-root-orthographic-camera-component.js +1 -1
  840. package/dist/domain/system-components/fit-root-perspective-camera-component.js +1 -1
  841. package/dist/domain/system-components/generic-dimension.d.ts +1 -1
  842. package/dist/domain/system-components/generic-dimension.js +1 -1
  843. package/dist/domain/system-components/hidden-entity.js +1 -1
  844. package/dist/domain/system-components/hotspot-drag-handle.d.ts +2 -3
  845. package/dist/domain/system-components/hotspot-drag-handle.js +1 -1
  846. package/dist/domain/system-components/index.d.ts +0 -68
  847. package/dist/domain/system-components/index.js +1 -1
  848. package/dist/domain/system-components/material-override-property-transition.js +1 -1
  849. package/dist/domain/system-components/material-override-transformer.js +1 -1
  850. package/dist/domain/system-components/material-swatch.js +1 -1
  851. package/dist/domain/system-components/navigation-page.js +1 -1
  852. package/dist/domain/system-components/navigation-panel-list.js +1 -1
  853. package/dist/domain/system-components/phoenix-entity-elements/admin-data-table-sidebar.d.ts +1 -1
  854. package/dist/domain/system-components/phoenix-layout-elements/admin-connected-resource-page.d.ts +1 -1
  855. package/dist/domain/system-components/phoenix-layout-elements/admin-data-table-actions.d.ts +1 -1
  856. package/dist/domain/system-components/phoenix-layout-elements/admin-data-table-page.d.ts +1 -1
  857. package/dist/domain/system-components/pivot-point.d.ts +1 -1
  858. package/dist/domain/system-components/pivot-point.js +1 -1
  859. package/dist/domain/system-components/price.js +1 -1
  860. package/dist/domain/system-components/projected-entities.d.ts +1 -1
  861. package/dist/domain/system-components/projected-entities.js +1 -1
  862. package/dist/domain/system-components/replace-entity-recipes.d.ts +1 -1
  863. package/dist/domain/system-components/replace-entity-recipes.js +1 -1
  864. package/dist/domain/system-components/scene-entity-ambient-light.js +1 -1
  865. package/dist/domain/system-components/scene-entity-box-object.js +1 -1
  866. package/dist/domain/system-components/scene-entity-directional-light.js +1 -1
  867. package/dist/domain/system-components/scene-entity-local-material-override.js +1 -1
  868. package/dist/domain/system-components/scene-entity-material-override.d.ts +1 -1
  869. package/dist/domain/system-components/scene-entity-material-override.js +1 -1
  870. package/dist/domain/system-components/scene-entity-object-clip.js +1 -1
  871. package/dist/domain/system-components/scene-entity-object-decal.js +1 -1
  872. package/dist/domain/system-components/scene-entity-object-group.js +1 -1
  873. package/dist/domain/system-components/scene-entity-object-local-material-override.js +1 -1
  874. package/dist/domain/system-components/scene-entity-object-material-override.d.ts +1 -1
  875. package/dist/domain/system-components/scene-entity-object-material-override.js +1 -1
  876. package/dist/domain/system-components/scene-entity-object-properties.js +1 -1
  877. package/dist/domain/system-components/scene-entity-object-remote-material-override.js +1 -1
  878. package/dist/domain/system-components/scene-entity-object-text-decal.d.ts +1 -1
  879. package/dist/domain/system-components/scene-entity-object-text-decal.js +1 -1
  880. package/dist/domain/system-components/scene-entity-object-transformer.js +1 -1
  881. package/dist/domain/system-components/scene-entity-object-transimissive-material-override.d.ts +1 -1
  882. package/dist/domain/system-components/scene-entity-object-transimissive-material-override.js +1 -1
  883. package/dist/domain/system-components/scene-entity-object.js +1 -1
  884. package/dist/domain/system-components/scene-entity-point-light.js +1 -1
  885. package/dist/domain/system-components/scene-entity-properties.js +1 -1
  886. package/dist/domain/system-components/scene-entity-rect-area-light.js +1 -1
  887. package/dist/domain/system-components/scene-entity-remote-material-override.js +1 -1
  888. package/dist/domain/system-components/scene-entity-remote-object.js +1 -1
  889. package/dist/domain/system-components/scene-entity-spot-light.js +1 -1
  890. package/dist/domain/system-components/scene-entity-transimissive-material-override.d.ts +1 -1
  891. package/dist/domain/system-components/scene-entity-transimissive-material-override.js +1 -1
  892. package/dist/domain/system-components/sketching-line.d.ts +1 -1
  893. package/dist/domain/system-components/sketching-line.js +1 -1
  894. package/dist/domain/system-components/sketching-rectangle.d.ts +1 -1
  895. package/dist/domain/system-components/sketching-rectangle.js +1 -1
  896. package/dist/domain/system-components/sketching.d.ts +1 -1
  897. package/dist/domain/system-components/sketching.js +1 -1
  898. package/dist/domain/system-components/snap-axis.d.ts +1 -1
  899. package/dist/domain/system-components/snap-axis.js +1 -1
  900. package/dist/domain/system-components/snap-edge.d.ts +1 -1
  901. package/dist/domain/system-components/snap-edge.js +1 -1
  902. package/dist/domain/system-components/snap-plane.d.ts +1 -1
  903. package/dist/domain/system-components/snap-plane.js +1 -1
  904. package/dist/domain/system-components/snap-point.d.ts +1 -1
  905. package/dist/domain/system-components/snap-point.js +1 -1
  906. package/dist/domain/system-components/static-orthographic-camera-component.d.ts +1 -1
  907. package/dist/domain/system-components/static-orthographic-camera-component.js +1 -1
  908. package/dist/domain/system-components/static-perspective-camera-component.d.ts +1 -1
  909. package/dist/domain/system-components/static-perspective-camera-component.js +1 -1
  910. package/dist/domain/utils/eval-cache.d.ts +2 -3
  911. package/dist/domain/utils/map-nested-object.d.ts +1 -1
  912. package/dist/domain/utils/memo-eval.d.ts +2 -4
  913. package/dist/editor/domain-editors/use-implementation-files.d.ts +8 -8
  914. package/dist/editor/domain-editors/use-implementation-files.js +1 -1
  915. package/dist/editor/mocks/EditorMockContext.js +1 -1
  916. package/dist/globals/index.d.ts +2 -0
  917. package/dist/i18n/locales/cs/messages.js +1 -1
  918. package/dist/i18n/locales/da/messages.js +1 -1
  919. package/dist/i18n/locales/de/messages.js +1 -1
  920. package/dist/i18n/locales/de-AT/messages.js +1 -1
  921. package/dist/i18n/locales/en/messages.js +1 -1
  922. package/dist/i18n/locales/en-AU/messages.js +1 -1
  923. package/dist/i18n/locales/en-GB/messages.js +1 -1
  924. package/dist/i18n/locales/es/messages.js +1 -1
  925. package/dist/i18n/locales/fr/messages.js +1 -1
  926. package/dist/i18n/locales/hu/messages.js +1 -1
  927. package/dist/i18n/locales/it/messages.js +1 -1
  928. package/dist/i18n/locales/nl/messages.js +1 -1
  929. package/dist/i18n/locales/pl/messages.js +1 -1
  930. package/dist/i18n/locales/pt/messages.js +1 -1
  931. package/dist/i18n/locales/ro/messages.js +1 -1
  932. package/dist/i18n/locales/sk/messages.js +1 -1
  933. package/dist/i18n/locales/tr/messages.js +1 -1
  934. package/dist/legacy/domain-cli/gen/configurator-builder.js +30 -16
  935. package/dist/legacy/domain-cli/gen/constant-expressions.js +1 -3
  936. package/dist/legacy/domain-cli/gen/defaults.js +1 -7
  937. package/dist/legacy/domain-cli/gen/implementation.js +7 -11
  938. package/dist/legacy/domain-cli/gen/invariants.js +7 -6
  939. package/dist/legacy/domain-cli/gen/relations.js +1 -1
  940. package/dist/legacy/domain-cli/utils/cache.d.ts +1 -1
  941. package/dist/legacy/domain-cli/utils/cache.js +1 -1
  942. package/dist/legacy/domain-spec/__generated/domain-schema.d.ts +81 -68
  943. package/dist/legacy/phoenix-cli/project-gen/generators/file-templates/agents/claude-md.d.ts +1 -1
  944. package/dist/legacy/phoenix-cli/project-gen/generators/file-templates/agents/cursor-rules.d.ts +1 -1
  945. package/dist/legacy/phoenix-cli/project-gen/generators/file-templates/agents/shared-sdk-content.d.ts +1 -1
  946. package/dist/legacy/phoenix-cli/project-gen/generators/file-templates/agents/shared-sdk-content.js +7 -0
  947. package/dist/legacy/phoenix-cli/project-gen/generators/file-templates/domain-index.js +17 -15
  948. package/dist/legacy/phoenix-cli/project-gen/generators/file-templates/env-example.d.ts +1 -1
  949. package/dist/legacy/phoenix-cli/project-gen/generators/file-templates/env-example.js +4 -0
  950. package/dist/legacy/phoenix-cli/project-gen/generators/file-templates/frontend-admin.js +16 -15
  951. package/dist/legacy/phoenix-cli/project-gen/generators/file-templates/frontend-configurator.js +16 -15
  952. package/dist/legacy/phoenix-cli/project-gen/generators/file-templates/frontend-embedded-admin.js +23 -22
  953. package/dist/legacy/phoenix-cli/project-gen/generators/file-templates/frontend-embedded-configurator.js +16 -15
  954. package/dist/legacy/phoenix-cli/project-gen/generators/file-templates/generator-shared.d.ts +7 -2
  955. package/dist/legacy/phoenix-cli/project-gen/generators/file-templates/generator-shared.js +8 -12
  956. package/dist/legacy/phoenix-cli/project-gen/generators/file-templates/index.d.ts +1 -1
  957. package/dist/legacy/phoenix-cli/project-gen/generators/file-templates/index.js +1 -1
  958. package/dist/legacy/phoenix-cli/project-gen/generators/file-templates/webhook-builders.js +7 -7
  959. package/dist/phoenix/application-spec/application-spec-builder.js +1 -1
  960. package/dist/phoenix/application-spec/project-files.js +1 -1
  961. package/dist/phoenix/application-spec/resolve-deployment-data.d.ts +4 -3
  962. package/dist/phoenix/application-spec/resolve-deployment-data.js +2 -2
  963. package/dist/phoenix/cli.js +1 -1
  964. package/dist/phoenix/commands/check.js +1 -1
  965. package/dist/phoenix/commands/deploy.js +1 -1
  966. package/dist/phoenix/commands/deps/deps.d.ts +52 -0
  967. package/dist/phoenix/commands/deps/deps.js +3 -0
  968. package/dist/phoenix/commands/deps/index.d.ts +1 -0
  969. package/dist/phoenix/commands/deps/index.js +1 -0
  970. package/dist/phoenix/commands/deps/sdk-manifest.d.ts +12 -0
  971. package/dist/phoenix/commands/deps/sdk-manifest.js +1 -0
  972. package/dist/phoenix/commands/dev.js +5 -5
  973. package/dist/phoenix/commands/fix.js +1 -1
  974. package/dist/phoenix/commands/index.d.ts +1 -0
  975. package/dist/phoenix/commands/index.js +1 -1
  976. package/dist/phoenix/commands/init.d.ts +4 -4
  977. package/dist/phoenix/commands/init.js +1 -1
  978. package/dist/phoenix/commands/prepare-deployment-command.js +2 -2
  979. package/dist/phoenix/commands/prepare-local-environment-command.js +1 -1
  980. package/dist/phoenix/commands/prettier.js +1 -1
  981. package/dist/phoenix/scripts/build-admin.js +1 -1
  982. package/dist/phoenix/services/application-spec-project-watcher.d.ts +2 -0
  983. package/dist/phoenix/services/application-spec-project-watcher.js +3 -3
  984. package/dist/phoenix/services/prepare-development-environment.js +1 -1
  985. package/dist/phoenix/services/source-archive.d.ts +1 -0
  986. package/dist/phoenix/services/source-archive.js +1 -1
  987. package/dist/phoenix/services/swc.js +1 -1
  988. package/dist/phoenix/services/variant-file-session.js +1 -1
  989. package/dist/phoenix/utils/git/index.d.ts +1 -0
  990. package/dist/phoenix/utils/git/index.js +1 -0
  991. package/dist/phoenix/utils/git/is-inside-git-repository.d.ts +6 -0
  992. package/dist/phoenix/utils/git/is-inside-git-repository.js +1 -0
  993. package/dist/phoenix/utils/index.d.ts +2 -0
  994. package/dist/phoenix/utils/index.js +1 -1
  995. package/dist/react-sdk/application-runtime/hooks/use-access-service.d.ts +2 -0
  996. package/dist/react-sdk/application-runtime/hooks/use-domain-application-props.d.ts +5 -2
  997. package/dist/react-sdk/application-runtime/hooks/use-spec.d.ts +1 -1
  998. package/dist/react-sdk/application-runtime/mocks/create-mock-application-runtime.d.ts +1 -1
  999. package/dist/react-sdk/application-runtime/mocks/create-mock-application-runtime.js +1 -1
  1000. package/dist/react-sdk/application-runtime/routing/access-service.d.ts +1 -0
  1001. package/dist/react-sdk/application-runtime/runtime/create-application-runtime.d.ts +57 -40
  1002. package/dist/react-sdk/application-runtime/runtime/create-application-runtime.js +1 -1
  1003. package/dist/react-sdk/domain-context/common-hooks/use-configurator-messages.d.ts +30 -0
  1004. package/dist/react-sdk/domain-context/common-hooks/use-configurator-messages.js +1 -0
  1005. package/dist/react-sdk/domain-context/common-hooks/use-domain-context.d.ts +9 -9
  1006. package/dist/react-sdk/domain-context/index.d.ts +2 -1
  1007. package/dist/react-sdk/domain-context/index.js +1 -1
  1008. package/dist/react-sdk/domain-context/system-hooks/navigation-hooks.d.ts +11 -0
  1009. package/dist/react-sdk/domain-context/system-hooks/navigation-hooks.js +1 -1
  1010. package/dist/react-sdk/domain-controls/hooks/use-angle-dimension.d.ts +1 -1
  1011. package/dist/ui-sdk/theme/types.d.ts +1 -1
  1012. package/dist/webhook/builders/common.d.ts +8 -0
  1013. package/dist/webhook/builders/webhook-builder.d.ts +1 -1
  1014. package/dist/webhook/builders/webhook-builder.js +1 -1
  1015. package/package.json +33 -29
  1016. package/schema/domain-spec.json +1115 -209
  1017. package/dist/application-spec/generate-application/code/templates/env-ci.d.ts +0 -1
  1018. package/dist/application-spec/generate-application/code/templates/env-ci.js +0 -25
  1019. package/dist/application-spec/generate-application/code/templates/env-example.d.ts +0 -1
  1020. package/dist/application-spec/generate-application/code/templates/env-example.js +0 -90
  1021. package/dist/application-spec/generate-application/code/templates/prettier-ignore.d.ts +0 -1
  1022. package/dist/application-spec/generate-application/code/templates/prettier-ignore.js +0 -6
  1023. package/dist/application-spec/generate-application/code/templates/private-assets-readme.d.ts +0 -1
  1024. package/dist/application-spec/generate-application/code/templates/private-assets-readme.js +0 -24
  1025. package/dist/application-spec/generate-application/code/templates/public-assets-readme.d.ts +0 -1
  1026. package/dist/application-spec/generate-application/code/templates/public-assets-readme.js +0 -24
  1027. package/dist/application-spec/generate-application/code/templates/readme.d.ts +0 -1
  1028. package/dist/application-spec/generate-application/code/templates/readme.js +0 -23
  1029. package/dist/application-spec/generate-application/code/templates/skills/agents-md.d.ts +0 -1
  1030. package/dist/application-spec/generate-application/code/templates/skills/agents-md.js +0 -2
  1031. package/dist/application-spec/generate-application/code/templates/webhook-implementation.d.ts +0 -1
  1032. package/dist/application-spec/generate-application/code/templates/webhook-implementation.js +0 -7
  1033. package/dist/domain/actions/action-factory.d.ts +0 -10
  1034. package/dist/domain/actions/prepare-action-implementations.js +0 -5
  1035. package/dist/domain/application/element-registration.js +0 -1
  1036. package/dist/domain/application/handler-registration.js +0 -1
  1037. package/dist/domain/application/resolve-imported-transformers.d.ts +0 -13
  1038. package/dist/domain/application/resolve-imported-transformers.js +0 -1
  1039. package/dist/domain/application/resource-builder.d.ts +0 -13
  1040. package/dist/domain/application/resource-builder.js +0 -1
  1041. package/dist/domain/components/debug-state-component.js +0 -1
  1042. package/dist/domain/components/domain-component-optic.d.ts +0 -76
  1043. package/dist/domain/components/domain-component-optic.js +0 -16
  1044. package/dist/domain/components/drag-state-component.js +0 -1
  1045. package/dist/domain/components/export-state-component.js +0 -1
  1046. package/dist/domain/components/fullscreen-state-component.js +0 -1
  1047. package/dist/domain/components/group-components-by-entity-id-and-name.js +0 -1
  1048. package/dist/domain/components/hover-state-component.js +0 -1
  1049. package/dist/domain/components/index.d.ts +0 -2
  1050. package/dist/domain/components/index.js +0 -1
  1051. package/dist/domain/components/navigation-state-component.js +0 -1
  1052. package/dist/domain/components/selection-state-component.js +0 -1
  1053. package/dist/domain/components/system-component-builder.js +0 -1
  1054. package/dist/domain/components/system-virtual-entity.js +0 -1
  1055. package/dist/domain/components/tool-state-component.js +0 -1
  1056. package/dist/domain/components/view-state-component.js +0 -1
  1057. package/dist/domain/components/viewport-state-component.js +0 -1
  1058. package/dist/domain/core/expression.d.ts +0 -50
  1059. package/dist/domain/core/json-schema.js +0 -1
  1060. package/dist/domain/core/migrations.js +0 -1
  1061. package/dist/domain/core/reflection.js +0 -1
  1062. package/dist/domain/domain-context/recipe-system/recipes.d.ts +0 -57
  1063. package/dist/domain/domain-context/recipe-system/recipes.js +0 -1
  1064. package/dist/domain/expressions/constant-expressions.d.ts +0 -9
  1065. package/dist/domain/expressions/constant-expressions.js +0 -1
  1066. package/dist/domain/expressions/custom-expression.d.ts +0 -13
  1067. package/dist/domain/expressions/custom-expression.js +0 -1
  1068. package/dist/domain/expressions/index.d.ts +0 -1
  1069. package/dist/domain/expressions/index.js +0 -1
  1070. package/dist/domain/invariants/custom-invariants.d.ts +0 -22
  1071. package/dist/domain/invariants/custom-invariants.js +0 -1
  1072. package/dist/domain/invariants/invariants.d.ts +0 -68
  1073. package/dist/domain/invariants/invariants.js +0 -1
  1074. package/dist/domain/invariants/violation-component.js +0 -1
  1075. package/dist/domain/invariants/violation.js +0 -1
  1076. package/dist/domain/relations/all-of-type-relation.d.ts +0 -33
  1077. package/dist/domain/relations/all-of-type-relation.js +0 -1
  1078. package/dist/domain/relations/component-factories.js +0 -1
  1079. package/dist/domain/relations/composed-of.js +0 -1
  1080. package/dist/domain/relations/direct-relation.d.ts +0 -29
  1081. package/dist/domain/relations/indirect-relation.d.ts +0 -81
  1082. package/dist/domain/relations/indirect-relation.js +0 -1
  1083. package/dist/domain/relations/reference-component.js +0 -1
  1084. package/dist/domain/relations/relation-factory.d.ts +0 -19
  1085. package/dist/domain/relations/relation-factory.js +0 -1
  1086. package/dist/domain/relations/relation-implementation.d.ts +0 -8
  1087. package/dist/domain/system-components/angle-indicator.js +0 -1
  1088. package/dist/domain/system-components/attribute-switch.js +0 -1
  1089. package/dist/domain/system-components/autorotate-camera-component.js +0 -1
  1090. package/dist/domain/system-components/basic-sidebar-footer.js +0 -1
  1091. package/dist/domain/system-components/camera-based-hidden-entity-object.js +0 -1
  1092. package/dist/domain/system-components/camera-based-hidden-entity.js +0 -1
  1093. package/dist/domain/system-components/canvas-config.js +0 -1
  1094. package/dist/domain/system-components/canvas-custom-environment.js +0 -1
  1095. package/dist/domain/system-components/canvas-padding.js +0 -1
  1096. package/dist/domain/system-components/canvas-preset-environment.js +0 -1
  1097. package/dist/domain/system-components/child-entity-recipe-hierarchy.js +0 -1
  1098. package/dist/domain/system-components/client-side-image.js +0 -1
  1099. package/dist/domain/system-components/color-value.js +0 -1
  1100. package/dist/domain/system-components/common/angle-indicator-schema.js +0 -1
  1101. package/dist/domain/system-components/common/dimension-indicator-schema.js +0 -1
  1102. package/dist/domain/system-components/custom-price-footer.js +0 -1
  1103. package/dist/domain/system-components/dimension-indicator.js +0 -1
  1104. package/dist/domain/system-components/editable-angle-indicator.js +0 -1
  1105. package/dist/domain/system-components/editable-distance-dimension-indicator.js +0 -1
  1106. package/dist/domain/system-components/editable-offset-indicator.js +0 -1
  1107. package/dist/domain/system-components/editable-size-indicator.js +0 -1
  1108. package/dist/domain/system-components/entity-header.js +0 -1
  1109. package/dist/domain/system-components/exit-tool-mode-fab.js +0 -1
  1110. package/dist/domain/system-components/finalize-action.js +0 -1
  1111. package/dist/domain/system-components/finalize-component.js +0 -1
  1112. package/dist/domain/system-components/fit-selection-orthographic-camera-component.js +0 -1
  1113. package/dist/domain/system-components/fit-selection-perspective-camera-component.js +0 -1
  1114. package/dist/domain/system-components/fixed-header.js +0 -1
  1115. package/dist/domain/system-components/floating-header.js +0 -1
  1116. package/dist/domain/system-components/hidden-header.js +0 -1
  1117. package/dist/domain/system-components/hidden-sidebar-footer.js +0 -1
  1118. package/dist/domain/system-components/horizontal-tabs.js +0 -1
  1119. package/dist/domain/system-components/list-selector-dimension-indicator.js +0 -1
  1120. package/dist/domain/system-components/multilingual-text-value.js +0 -1
  1121. package/dist/domain/system-components/navigation-steps.js +0 -1
  1122. package/dist/domain/system-components/offset-anchors.js +0 -1
  1123. package/dist/domain/system-components/offset-indicator.js +0 -1
  1124. package/dist/domain/system-components/offset.js +0 -1
  1125. package/dist/domain/system-components/other-action.js +0 -1
  1126. package/dist/domain/system-components/property-page.js +0 -1
  1127. package/dist/domain/system-components/read-sidebar-footer.js +0 -1
  1128. package/dist/domain/system-components/replace-entity-recipe-hierarchy.js +0 -1
  1129. package/dist/domain/system-components/rotatable.js +0 -1
  1130. package/dist/domain/system-components/rotation-handle.js +0 -1
  1131. package/dist/domain/system-components/save-template-thumbnail.js +0 -1
  1132. package/dist/domain/system-components/scene-entity-add-fab.js +0 -1
  1133. package/dist/domain/system-components/scene-entity-animation.js +0 -1
  1134. package/dist/domain/system-components/scene-entity-control.js +0 -1
  1135. package/dist/domain/system-components/scene-entity-delete-fab.js +0 -1
  1136. package/dist/domain/system-components/scene-entity-floor-object.js +0 -1
  1137. package/dist/domain/system-components/scene-entity-html-hotspot.js +0 -1
  1138. package/dist/domain/system-components/scene-entity-navigation-hotspot.js +0 -1
  1139. package/dist/domain/system-components/scene-entity-object-html-hotspot.js +0 -1
  1140. package/dist/domain/system-components/scene-entity-select-hotspot.js +0 -1
  1141. package/dist/domain/system-components/scene-entity-wall-object.js +0 -1
  1142. package/dist/domain/system-components/selectable-component.js +0 -1
  1143. package/dist/domain/system-components/sidebar-tabs.js +0 -1
  1144. package/dist/domain/system-components/simple-summary.js +0 -1
  1145. package/dist/domain/system-components/size.js +0 -1
  1146. package/dist/domain/system-components/sketching-draw.js +0 -1
  1147. package/dist/domain/system-components/sketching-edit.js +0 -1
  1148. package/dist/domain/system-components/summary-component.js +0 -1
  1149. package/dist/domain/system-components/text-value.js +0 -1
  1150. package/dist/domain/system-components/tool-controls.js +0 -1
  1151. package/dist/domain/system-components/tool-menu-fab.js +0 -1
  1152. package/dist/domain/system-components/universal-sidebar-footer.js +0 -1
  1153. package/dist/domain/system-components/view-controls.js +0 -1
  1154. package/dist/phoenix/application-spec/generate-assistant-prompt.d.ts +0 -13
  1155. package/dist/phoenix/application-spec/generate-assistant-prompt.js +0 -1
  1156. /package/dist/{domain/components/component-reader-types.js → application-spec/core/expressions/relation-expression-params.js} +0 -0
  1157. /package/dist/application-spec/{core → enhanced-json}/eval-code-uses-self.d.ts +0 -0
  1158. /package/dist/application-spec/{core → enhanced-json}/eval-code-uses-self.js +0 -0
  1159. /package/dist/application-spec/{core → enhanced-json}/eval-to-constant.js +0 -0
  1160. /package/dist/domain/{core/action.js → application/assistant/assistant-manifest.js} +0 -0
  1161. /package/dist/domain/{actions → core/action}/action-factory.js +0 -0
  1162. /package/dist/domain/core/{enhanced-json-schema.js → action/action.js} +0 -0
  1163. /package/dist/domain/core/{expression.js → component/component-reader-types.js} +0 -0
  1164. /package/dist/domain/{components → core/component}/legacy-filter.js +0 -0
  1165. /package/dist/domain/{components → core/component}/system-component-filter.js +0 -0
  1166. /package/dist/domain/{components → core/component}/system-virtual-entity.d.ts +0 -0
  1167. /package/dist/domain/{components → core/component}/updates.js +0 -0
  1168. /package/dist/domain/core/{schema-validator.js → data-schema/data-cell-value.js} +0 -0
  1169. /package/dist/domain/{relations/reference-field.js → core/data-schema/data-schema-array-field.js} +0 -0
  1170. /package/dist/domain/{relations/relation-implementation.js → core/data-schema/data-schema-field-object.js} +0 -0
  1171. /package/dist/domain/{invariants → core/invariant}/builtin-invariant.js +0 -0
  1172. /package/dist/domain/{invariants → core/invariant}/violation-component.d.ts +0 -0
  1173. /package/dist/domain/core/{alias.d.ts → model/alias.d.ts} +0 -0
  1174. /package/dist/domain/core/{alias.js → model/alias.js} +0 -0
  1175. /package/dist/domain/core/{common-definitions.d.ts → model/common-definitions.d.ts} +0 -0
  1176. /package/dist/domain/core/{common-definitions.js → model/common-definitions.js} +0 -0
  1177. /package/dist/domain/core/{component.js → model/component.js} +0 -0
  1178. /package/dist/domain/core/{model.js → model/model.js} +0 -0
  1179. /package/dist/domain/core/{preset.d.ts → model/preset.d.ts} +0 -0
  1180. /package/dist/domain/core/{preset.js → model/preset.js} +0 -0
  1181. /package/dist/domain/{relations → core/relation}/direct-relation.js +0 -0
  1182. /package/dist/domain/core/{schema-validator-ajv.d.ts → schema/create-ajv-schema-validator.d.ts} +0 -0
  1183. /package/dist/domain/core/{schema-validator-ajv.js → schema/create-ajv-schema-validator.js} +0 -0
  1184. /package/dist/domain/core/{schema-validator-csp.d.ts → schema/create-csp-schema-validator.d.ts} +0 -0
  1185. /package/dist/domain/core/{schema-validator-csp.js → schema/create-csp-schema-validator.js} +0 -0
  1186. /package/dist/domain/core/{enhanced-json-schema.d.ts → schema/enhanced-json-schema.d.ts} +0 -0
  1187. /package/dist/domain/core/{json-schema.d.ts → schema/extended-schema-validator.d.ts} +0 -0
  1188. /package/dist/domain/core/{schema-validator.d.ts → schema/schema-validator.d.ts} +0 -0
  1189. /package/dist/domain/core/{state.js → state/state.js} +0 -0
  1190. /package/dist/domain/{expressions → domain-runtime/spec}/memoize-expression.js +0 -0
  1191. /package/dist/domain/{expressions → domain-runtime/spec}/prepare-domain-expressions.js +0 -0
  1192. /package/dist/domain/{system-components → extensions}/camera-based-hidden-entity-object.d.ts +0 -0
  1193. /package/dist/domain/{system-components → extensions}/camera-based-hidden-entity.d.ts +0 -0
  1194. /package/dist/domain/{system-components → extensions}/canvas-custom-environment.d.ts +0 -0
  1195. /package/dist/domain/{system-components → extensions}/color-value.d.ts +0 -0
  1196. /package/dist/domain/{system-components → extensions}/common/dimension-indicators.d.ts +0 -0
  1197. /package/dist/domain/{system-components → extensions}/common/dimension-indicators.js +0 -0
  1198. /package/dist/domain/{system-components → extensions}/common/editable-indicator-button-variant.d.ts +0 -0
  1199. /package/dist/domain/{system-components → extensions}/common/editable-indicator-button-variant.js +0 -0
  1200. /package/dist/domain/{system-components → extensions}/custom-price-footer.d.ts +0 -0
  1201. /package/dist/domain/{system-components → extensions}/finalize-component.d.ts +0 -0
  1202. /package/dist/domain/{system-components → extensions}/fit-selection-orthographic-camera-component.d.ts +0 -0
  1203. /package/dist/domain/{system-components → extensions}/fit-selection-perspective-camera-component.d.ts +0 -0
  1204. /package/dist/domain/{system-components → extensions}/multilingual-text-value.d.ts +0 -0
  1205. /package/dist/domain/{system-components → extensions}/rotatable.d.ts +0 -0
  1206. /package/dist/domain/{system-components → extensions}/scene-entity-animation.d.ts +0 -0
  1207. /package/dist/domain/{system-components → extensions}/scene-entity-control.d.ts +0 -0
  1208. /package/dist/domain/{system-components → extensions}/scene-entity-floor-object.d.ts +0 -0
  1209. /package/dist/domain/{system-components → extensions}/scene-entity-wall-object.d.ts +0 -0
  1210. /package/dist/domain/{system-components → extensions}/selectable-component.d.ts +0 -0
  1211. /package/dist/domain/{system-components → extensions}/simple-summary.d.ts +0 -0
  1212. /package/dist/domain/{system-components → extensions}/summary-component.d.ts +0 -0
  1213. /package/dist/domain/{system-components → extensions}/text-value.d.ts +0 -0
  1214. /package/dist/domain/{system-components → extensions}/tool-controls.d.ts +0 -0
  1215. /package/dist/domain/{system-components → extensions}/view-controls.d.ts +0 -0
@@ -12,6 +12,7 @@ export { prepareDevelopmentEnvironment } from '../services/prepare-development-e
12
12
  export { prepareLocalEnvironment } from './prepare-local-environment-command.js';
13
13
  export { runFinishDeploymentCommand } from './finish-deployment-command.js';
14
14
  export { runDeploymentBuildEnvsCommand } from './deployment-build-envs-command.js';
15
+ export { runDepsCommand } from './deps/index.js';
15
16
  export { runDevCommand } from './dev.js';
16
17
  export { runFixCommand } from './fix.js';
17
18
  export { runLinkCommand } from './link.js';
@@ -1 +1 @@
1
- export{runBuildCommand}from"./build.js";export{runCheckCommand}from"./check.js";export{runCleanCommand}from"./clean.js";export{runActivateDeploymentCommand}from"./activate-deployment.js";export{runCreateEnvironmentCommand}from"./create-environment.js";export{runCleanupEnvironmentCommand}from"./cleanup-environment.js";export{runListEnvironmentsCommand}from"./list-environments.js";export{runRegisterDeploymentCommand}from"./register-deployment.js";export{runPrepareDeploymentCommand}from"./prepare-deployment-command.js";export{prepareDevelopmentEnvironment}from"../services/prepare-development-environment.js";export{prepareLocalEnvironment}from"./prepare-local-environment-command.js";export{runFinishDeploymentCommand}from"./finish-deployment-command.js";export{runDeploymentBuildEnvsCommand}from"./deployment-build-envs-command.js";export{runDevCommand}from"./dev.js";export{runFixCommand}from"./fix.js";export{runLinkCommand}from"./link.js";export{runUnlinkCommand}from"./unlink.js";export{runPrepareCiCommand}from"./prepare-ci.js";export{runStoryCommand}from"./story.js";export{runStoryBuildCommand}from"./story-build.js";export{runStoryCreateCommand}from"./story-create.js";export{runStoryDevCommand}from"./story-dev.js";export{runInitCommand}from"./init.js";export{runSyncCommand}from"./sync.js";export{runChangelogCommand}from"./changelog.js";export{runDocsCommand}from"./docs.js";export{runInspectAssetsCommand}from"./inspect-assets.js";export{runScreenshotCommand}from"./screenshot.js";export{runStateCommand}from"./state.js";export{runDataCommand}from"./data.js";export{runSceneCommand}from"./scene.js";export{runVariantsCommand}from"./variants.js";export{runLoginCommand}from"./login.js";export{runLogoutCommand}from"./logout.js";export{runDeployCommand}from"./deploy.js";export{runFeedbackCommand}from"./feedback.js";export{runExtractSourcesCommand}from"./extract-sources-command.js";
1
+ export{runBuildCommand}from"./build.js";export{runCheckCommand}from"./check.js";export{runCleanCommand}from"./clean.js";export{runActivateDeploymentCommand}from"./activate-deployment.js";export{runCreateEnvironmentCommand}from"./create-environment.js";export{runCleanupEnvironmentCommand}from"./cleanup-environment.js";export{runListEnvironmentsCommand}from"./list-environments.js";export{runRegisterDeploymentCommand}from"./register-deployment.js";export{runPrepareDeploymentCommand}from"./prepare-deployment-command.js";export{prepareDevelopmentEnvironment}from"../services/prepare-development-environment.js";export{prepareLocalEnvironment}from"./prepare-local-environment-command.js";export{runFinishDeploymentCommand}from"./finish-deployment-command.js";export{runDeploymentBuildEnvsCommand}from"./deployment-build-envs-command.js";export{runDepsCommand}from"./deps/index.js";export{runDevCommand}from"./dev.js";export{runFixCommand}from"./fix.js";export{runLinkCommand}from"./link.js";export{runUnlinkCommand}from"./unlink.js";export{runPrepareCiCommand}from"./prepare-ci.js";export{runStoryCommand}from"./story.js";export{runStoryBuildCommand}from"./story-build.js";export{runStoryCreateCommand}from"./story-create.js";export{runStoryDevCommand}from"./story-dev.js";export{runInitCommand}from"./init.js";export{runSyncCommand}from"./sync.js";export{runChangelogCommand}from"./changelog.js";export{runDocsCommand}from"./docs.js";export{runInspectAssetsCommand}from"./inspect-assets.js";export{runScreenshotCommand}from"./screenshot.js";export{runStateCommand}from"./state.js";export{runDataCommand}from"./data.js";export{runSceneCommand}from"./scene.js";export{runVariantsCommand}from"./variants.js";export{runLoginCommand}from"./login.js";export{runLogoutCommand}from"./logout.js";export{runDeployCommand}from"./deploy.js";export{runFeedbackCommand}from"./feedback.js";export{runExtractSourcesCommand}from"./extract-sources-command.js";
@@ -6,10 +6,10 @@ export interface InitCommandProps {
6
6
  }
7
7
  /**
8
8
  * Starts a Phoenix project: writes a `package.json` that depends on this CLI's SDK version when the folder has none,
9
- * the starter spec and the pnpm settings the first install needs, and switches the project to the application-spec
10
- * pipeline. It touches no server and asks
11
- * nothing: the starter spec names the default project of whichever workspace the developer signs in to, and
12
- * everything else is generated by sync or the build.
9
+ * the starter spec and the pnpm settings the first install needs, adds the `dev`, `build`, `deploy`, `check` and `fix`
10
+ * scripts the project does not have yet, and switches the project to the application-spec pipeline. It touches no
11
+ * server and asks nothing: the starter spec names the default project of whichever workspace the developer signs in
12
+ * to, and everything else is generated by sync or the build.
13
13
  *
14
14
  * Refuses when a `spec/` folder exists, and when an existing `package.json` does not depend on the SDK.
15
15
  */
@@ -1 +1 @@
1
- import{existsSync as e}from"fs";import{mkdir as n,readFile as t,writeFile as i}from"fs/promises";import{basename as o,dirname as r,join as p}from"path";import{ensureWorkspaceInstallSettings as a}from"../utils/index.js";import{starterSpecFiles as s}from"./init-starter-spec.js";let c="@salsita-ai/sdk",l=async e=>{let n=`Install the SDK first (\`pnpm add ${c}\`), then rerun \`pnpm phoenix init\`.`,i=JSON.parse(await t(e,"utf-8"));if("object"!=typeof i||null===i||Array.isArray(i))throw Error(`phoenix init could not read package.json because it is not a JSON object. ${n}`);if(!["dependencies","devDependencies"].some(e=>{let n=Reflect.get(i,e);return"object"==typeof n&&null!==n&&c in n}))throw Error(`phoenix init found no ${c} dependency in package.json. ${n}`);return{...i}},d=async e=>{for(let t of s){let o=p(e,t.path);await n(r(o),{recursive:!0}),await i(o,t.content)}},m=async(e,n)=>{let t=n.phoenix;await i(e,JSON.stringify({...n,phoenix:{..."object"==typeof t&&null!==t?t:{},applicationFlow:!0}},null,2)+"\n")};export const runInitCommand=async(t,{logger:i})=>{var r,s;let f,u=t.projectRoot??process.cwd(),h=p(u,"package.json");if(e(p(u,"spec")))throw Error("phoenix init found an existing spec/ folder. init only starts new projects, and writing a starter spec would overwrite or mix with the existing one. To update an existing project, run `pnpm phoenix sync`; to start over, run init in an empty project folder.");let w=e(h)?await l(h):(r=u,s=t.sdkVersion,{name:(f=o(r).toLowerCase().replace(/[^a-z0-9._-]+/g,"-").replace(/^[._-]+|[-]+$/g,"")).length>0?f:"phoenix-configurator",private:!0,type:"module",dependencies:{[c]:s},devDependencies:{"@lingui/cli":"5.9.5","@lingui/swc-plugin":"5.11.0"}});i.step(`Writing the starter project to ${u}`),await n(u,{recursive:!0}),await d(u),await m(h,w),a(u),i.success(`Phoenix project created in ${u}.`),i.info("\nNext steps, in the project folder:\n pnpm install\n pnpm phoenix sync\n pnpm phoenix login <workspace>\n pnpm phoenix dev\n pnpm phoenix deploy\n\nDeveloping against a Studio development environment instead? Paste its .env block into .env before phoenix dev.")};
1
+ import{existsSync as e}from"fs";import{mkdir as n,readFile as t,writeFile as i}from"fs/promises";import{basename as o,dirname as r,join as p}from"path";import{ensureWorkspaceInstallSettings as s}from"../utils/index.js";import{starterSpecFiles as a}from"./init-starter-spec.js";let c="@salsita-ai/sdk",l={dev:"phoenix dev",build:"phoenix build",deploy:"phoenix deploy",check:"phoenix check",fix:"phoenix fix"},d=async e=>{let n=`Install the SDK first (\`pnpm add ${c}\`), then rerun \`pnpm phoenix init\`.`,i=JSON.parse(await t(e,"utf-8"));if("object"!=typeof i||null===i||Array.isArray(i))throw Error(`phoenix init could not read package.json because it is not a JSON object. ${n}`);if(!["dependencies","devDependencies"].some(e=>{let n=Reflect.get(i,e);return"object"==typeof n&&null!==n&&c in n}))throw Error(`phoenix init found no ${c} dependency in package.json. ${n}`);return{...i}},h=async e=>{for(let t of a){let o=p(e,t.path);await n(r(o),{recursive:!0}),await i(o,t.content)}},f=async(e,n)=>{let t=n.phoenix,o=n.scripts,r="object"==typeof o&&null!==o?o:{},p=Object.fromEntries(Object.entries(l).filter(([e])=>!(e in r)));await i(e,JSON.stringify({...n,scripts:{...r,...p},phoenix:{..."object"==typeof t&&null!==t?t:{},applicationFlow:!0}},null,2)+"\n")};export const runInitCommand=async(t,{logger:i})=>{var r,a;let u,m=t.projectRoot??process.cwd(),x=p(m,"package.json");if(e(p(m,"spec")))throw Error("phoenix init found an existing spec/ folder. init only starts new projects, and writing a starter spec would overwrite or mix with the existing one. To update an existing project, run `pnpm phoenix sync`; to start over, run init in an empty project folder.");let w=e(x)?await d(x):(r=m,a=t.sdkVersion,{name:(u=o(r).toLowerCase().replace(/[^a-z0-9._-]+/g,"-").replace(/^[._-]+|[-]+$/g,"")).length>0?u:"phoenix-configurator",private:!0,type:"module",scripts:l,dependencies:{[c]:a},devDependencies:{"@lingui/cli":"5.9.5","@lingui/swc-plugin":"5.11.0"}});i.step(`Writing the starter project to ${m}`),await n(m,{recursive:!0}),await h(m),await f(x,w),s(m),i.success(`Phoenix project created in ${m}.`),i.info("\nNext steps, in the project folder:\n pnpm install\n pnpm phoenix sync\n pnpm phoenix login <workspace>\n pnpm phoenix dev\n pnpm phoenix deploy\n\nDeveloping against a Studio development environment instead? Paste its .env block into .env before phoenix dev.")};
@@ -1,2 +1,2 @@
1
- import{writeFile as e}from"fs/promises";import{createApiBaseClient as a}from"#package/client";import{resolveApplicationSpecDeploymentData as r}from"../application-spec/index.js";import{formatEnvContent as t,formatEnvLine as i}from"../utils/index.js";export const runPrepareDeploymentCommand=async(s,n)=>{let{logger:o}=n;try{o.step("Preparing deployment");let{apiKey:n,projectKey:l,projectSlug:p,projectRef:c,projectSha:m,environmentSlug:d,outFile:h,skipUpload:u,overrideSchema:f,uploadLinksFile:g,serverUrl:v}=s;o.info(`Preparing deployment for project "${p}", environment "${d}"`);let b=a(v);o.debug(`Using server URL: ${v}`);let y=await r({skipUpload:u,logger:o});if(y.assistant){let{sdl:e,prompt:a,instructions:r}=y.assistant,t=a.length+e.length+(r?.length??0);o.info(`Assistant GraphQL schema:
2
- ${e}`),o.info(`Assistant prompt of this deployment (generated prompt, schema and instructions): ${t} characters`)}o.info("Preparing deployment on server...");let{data:w,error:F}=await b.POST("/environments/prepare",{body:{projectSlug:p,environmentSlug:d,applicationVersion:y.applicationVersion,projectRef:c,projectSha:m,publishedDataHash:y.publishedDataHash,useAuthHook:y.useAuthHook,overrideSchema:f,configurationSchema:{version:y.schemaVersion,schema:y.schema},adminConfigurationSchema:y.adminSchema?{schema:y.adminSchema,version:y.adminSchemaVersion}:void 0,chat:y.chat,embeddings:y.embeddings,assistant:y.assistant,acl:{canCreate:y.aclCanCreate},privateFiles:[...y.assets.privateFilePaths],publicFiles:[...y.assets.publicFilePaths]},headers:{"x-api-key":n,"x-project-key":l,"x-project-slug":p}});if(F)throw Error(`Failed to prepare deployment with server: ${F.message}`);if(!w)throw Error("No data returned from server");o.debug("Deployment prepared on server");let{baseDomain:S,isCustomDomain:P}=w,U=w.environmentVariables,k=w.privateUploadUrls,$=w.publicUploadUrls;if(!U||!k||!$)throw Error("Incomplete data returned from server");try{let a=[t(U),i("BASE_DOMAIN",String(S)),i("IS_CUSTOM_DOMAIN",String(P))].join("\n");await e(h,a+"\n"),o.debug(`Environment variables written to ${h}`)}catch(e){throw Error("Failed to write environment variables to file")}try{if(u)await e(g,JSON.stringify({privateFiles:[],publicFiles:[]},null,2)),o.debug("Upload links file cleared (upload was skipped)");else{let a={privateFiles:[...y.assets.privateFilesFullPaths].map(e=>({localPath:e,uploadUrl:k[e.replace(/^assets\/private\//,"")]})),publicFiles:[...y.assets.publicFilesFullPaths].map(e=>({localPath:e,uploadUrl:$[e.replace(/^assets\/public\//,"")]}))};await e(g,JSON.stringify(a,null,2)),o.debug(`Upload links written to ${g}`),o.info('Run "finish" command to upload files and activate the deployment')}}catch(e){throw Error("Failed to write upload links to file")}o.success("Deployment prepared successfully!")}catch(e){o.error(`Deployment preparation failed: ${e instanceof Error?e.message:String(e)}`,e),process.exit(1)}};
1
+ import{writeFile as e}from"fs/promises";import{createApiBaseClient as t}from"#package/client";import{resolveApplicationSpecDeploymentData as a}from"../application-spec/index.js";import{formatEnvContent as r,formatEnvLine as i}from"../utils/index.js";export const runPrepareDeploymentCommand=async(s,n)=>{let{logger:o}=n;try{o.step("Preparing deployment");let{apiKey:n,projectKey:l,projectSlug:p,projectRef:c,projectSha:m,environmentSlug:d,outFile:h,skipUpload:u,overrideSchema:f,uploadLinksFile:g,serverUrl:v}=s;o.info(`Preparing deployment for project "${p}", environment "${d}"`);let b=t(v);o.debug(`Using server URL: ${v}`);let y=await a({skipUpload:u,logger:o});if(y.assistantSetup){let{sdl:e,prompt:t,instructions:a}=y.assistantSetup,r=t.length+e.length+(a?.length??0);o.info(`Assistant GraphQL schema:
2
+ ${e}`),o.info(`Assistant prompt of this deployment (generated prompt, schema and instructions): ${r} characters`)}o.info("Preparing deployment on server...");let{data:w,error:S}=await b.POST("/environments/prepare",{body:{projectSlug:p,environmentSlug:d,applicationVersion:y.applicationVersion,projectRef:c,projectSha:m,publishedDataHash:y.publishedDataHash,useAuthHook:y.useAuthHook,overrideSchema:f,configurationSchema:{version:y.schemaVersion,schema:y.schema},adminConfigurationSchema:y.adminSchema?{schema:y.adminSchema,version:y.adminSchemaVersion}:void 0,chat:y.chat,embeddings:y.embeddings,...y.assistant?{assistant:!0}:{},acl:{canCreate:y.aclCanCreate},privateFiles:[...y.assets.privateFilePaths],publicFiles:[...y.assets.publicFilePaths]},headers:{"x-api-key":n,"x-project-key":l,"x-project-slug":p}});if(S)throw Error(`Failed to prepare deployment with server: ${S.message}`);if(!w)throw Error("No data returned from server");o.debug("Deployment prepared on server");let{baseDomain:F,isCustomDomain:P}=w,U=w.environmentVariables,k=w.privateUploadUrls,$=w.publicUploadUrls;if(!U||!k||!$)throw Error("Incomplete data returned from server");try{let t=[r(U),i("BASE_DOMAIN",String(F)),i("IS_CUSTOM_DOMAIN",String(P))].join("\n");await e(h,t+"\n"),o.debug(`Environment variables written to ${h}`)}catch(e){throw Error("Failed to write environment variables to file")}try{if(u)await e(g,JSON.stringify({privateFiles:[],publicFiles:[]},null,2)),o.debug("Upload links file cleared (upload was skipped)");else{let t={privateFiles:[...y.assets.privateFilesFullPaths].map(e=>({localPath:e,uploadUrl:k[e.replace(/^assets\/private\//,"")]})),publicFiles:[...y.assets.publicFilesFullPaths].map(e=>({localPath:e,uploadUrl:$[e.replace(/^assets\/public\//,"")]}))};await e(g,JSON.stringify(t,null,2)),o.debug(`Upload links written to ${g}`),o.info('Run "finish" command to upload files and activate the deployment')}}catch(e){throw Error("Failed to write upload links to file")}o.success("Deployment prepared successfully!")}catch(e){o.error(`Deployment preparation failed: ${e instanceof Error?e.message:String(e)}`,e),process.exit(1)}};
@@ -1 +1 @@
1
- import{writeFile as e}from"fs/promises";import{createApiBaseClient as r}from"#package/client";import{resolveApplicationSpecDeploymentData as t}from"../application-spec/index.js";import{formatEnvContent as i,uploadFilesWithPresignedUrls as a}from"../utils/index.js";export const prepareLocalEnvironment=async(o,s)=>{let{logger:n}=s;n.step("Preparing local environment");let{projectKey:l,projectSlug:p,outFile:c,skipUpload:d,overrideSchema:m,serverUrl:h,lambdaUrl:f,environmentSlug:v,apiKey:u}=o;n.info(`Preparing local environment for project "${p}", environment "${v}"`);let y=r(h);n.debug(`Using server URL: ${h}`);let b=await t({skipUpload:d,logger:n});n.info("Preparing a local environment and deployment on the server...");let{data:g,error:w}=await y.POST("/environments/prepare",{body:{projectSlug:p,environmentSlug:v,applicationVersion:b.applicationVersion,publishedDataHash:b.publishedDataHash,useAuthHook:b.useAuthHook,overrideSchema:m,configurationSchema:{version:b.schemaVersion,schema:b.schema},adminConfigurationSchema:b.adminSchema?{schema:b.adminSchema,version:b.adminSchemaVersion}:void 0,chat:b.chat,embeddings:b.embeddings,assistant:b.assistant,acl:{canCreate:b.aclCanCreate},privateFiles:[...b.assets.privateFilePaths],publicFiles:[...b.assets.publicFilePaths]},headers:{"x-api-key":u,"x-project-key":l,"x-project-slug":p}});if(w)throw Error(`Failed to prepare deployment with server: ${w.message}`);if(!g)throw Error("No data returned from server");n.debug("Deployment prepared on server");let E=g.environmentVariables,F=g.privateUploadUrls,P=g.publicUploadUrls,$=E?.DEPLOYMENT_ID;if(!E||!F||!P)throw Error("Incomplete data returned from server");if(!$)throw Error("No deployment ID returned from server");try{await e(c,i(E)+"\n"),n.debug(`Environment variables written to ${c}`)}catch(e){throw Error(`Failed to write environment variables to file at ${c}, please verify you have write permissions to this location.`)}if(d)n.debug("Skipping file upload");else{n.info("Uploading files to S3...");let e={privateFiles:[...b.assets.privateFilesFullPaths].map(e=>{let r=e.replace("assets/private/",""),t=F[r];if(!t)throw Error(`No upload URL provided for private file ${r}, the server did not return a presigned URL for this file, please verify the file exists in the assets/private directory.`);return{localPath:e,uploadUrl:t}}),publicFiles:[...b.assets.publicFilesFullPaths].map(e=>{let r=e.replace("assets/public/",""),t=P[r];if(!t)throw Error(`No upload URL provided for public file ${r}, the server did not return a presigned URL for this file, please verify the file exists in the assets/public directory.`);return{localPath:e,uploadUrl:t}})};await a(e,{logger:n})}n.info("Activating deployment...");let{error:U}=await y.POST("/deployments/{deploymentId}/activate",{params:{path:{deploymentId:$}},headers:{"x-project-key":l,"x-project-slug":p,"x-api-key":u},body:{lambdaUrl:f}});if(U)throw Error(`Failed to activate deployment with server: ${U.message}`);n.info(`Project: ${p}`),n.info(`Environment: ${v}`),n.info(`Deployment ID: ${$}`),n.info(`Lambda URL: ${f}`),n.success("Local environment prepared successfully!")};
1
+ import{writeFile as e}from"fs/promises";import{createApiBaseClient as r}from"#package/client";import{resolveApplicationSpecDeploymentData as t}from"../application-spec/index.js";import{formatEnvContent as i,uploadFilesWithPresignedUrls as a}from"../utils/index.js";export const prepareLocalEnvironment=async(o,s)=>{let{logger:n}=s;n.step("Preparing local environment");let{projectKey:l,projectSlug:p,outFile:c,skipUpload:d,overrideSchema:m,serverUrl:h,lambdaUrl:f,environmentSlug:v,apiKey:u}=o;n.info(`Preparing local environment for project "${p}", environment "${v}"`);let y=r(h);n.debug(`Using server URL: ${h}`);let b=await t({skipUpload:d,logger:n});n.info("Preparing a local environment and deployment on the server...");let{data:g,error:w}=await y.POST("/environments/prepare",{body:{projectSlug:p,environmentSlug:v,applicationVersion:b.applicationVersion,publishedDataHash:b.publishedDataHash,useAuthHook:b.useAuthHook,overrideSchema:m,configurationSchema:{version:b.schemaVersion,schema:b.schema},adminConfigurationSchema:b.adminSchema?{schema:b.adminSchema,version:b.adminSchemaVersion}:void 0,chat:b.chat,embeddings:b.embeddings,...b.assistant?{assistant:!0}:{},acl:{canCreate:b.aclCanCreate},privateFiles:[...b.assets.privateFilePaths],publicFiles:[...b.assets.publicFilePaths]},headers:{"x-api-key":u,"x-project-key":l,"x-project-slug":p}});if(w)throw Error(`Failed to prepare deployment with server: ${w.message}`);if(!g)throw Error("No data returned from server");n.debug("Deployment prepared on server");let E=g.environmentVariables,F=g.privateUploadUrls,P=g.publicUploadUrls,$=E?.DEPLOYMENT_ID;if(!E||!F||!P)throw Error("Incomplete data returned from server");if(!$)throw Error("No deployment ID returned from server");try{await e(c,i(E)+"\n"),n.debug(`Environment variables written to ${c}`)}catch(e){throw Error(`Failed to write environment variables to file at ${c}, please verify you have write permissions to this location.`)}if(d)n.debug("Skipping file upload");else{n.info("Uploading files to S3...");let e={privateFiles:[...b.assets.privateFilesFullPaths].map(e=>{let r=e.replace("assets/private/",""),t=F[r];if(!t)throw Error(`No upload URL provided for private file ${r}, the server did not return a presigned URL for this file, please verify the file exists in the assets/private directory.`);return{localPath:e,uploadUrl:t}}),publicFiles:[...b.assets.publicFilesFullPaths].map(e=>{let r=e.replace("assets/public/",""),t=P[r];if(!t)throw Error(`No upload URL provided for public file ${r}, the server did not return a presigned URL for this file, please verify the file exists in the assets/public directory.`);return{localPath:e,uploadUrl:t}})};await a(e,{logger:n})}n.info("Activating deployment...");let{error:U}=await y.POST("/deployments/{deploymentId}/activate",{params:{path:{deploymentId:$}},headers:{"x-project-key":l,"x-project-slug":p,"x-api-key":u},body:{lambdaUrl:f}});if(U)throw Error(`Failed to activate deployment with server: ${U.message}`);n.info(`Project: ${p}`),n.info(`Environment: ${v}`),n.info(`Deployment ID: ${$}`),n.info(`Lambda URL: ${f}`),n.success("Local environment prepared successfully!")};
@@ -1 +1 @@
1
- import{readFile as t,writeFile as e}from"fs/promises";import{globby as o}from"globby";import{resolve as r}from"path";import*as i from"prettier";let a=["**/node_modules/**","**/dist/**","**/.git/**","**/webhooks/index.ts`","**/frontend-configurator.ts`","**/frontend-admin.ts`","**/frontend-embedded-admin.ts`","pnpm-lock.yaml",".linguirc"];export const formatFiles=async(n,f)=>{let{logger:l}=f,s=await o("."===n?"**/*":n,{gitignore:!0,ignore:a}),c=0;for(let o of s)try{let a=r(o),n=await t(a,"utf-8"),f=await i.resolveConfig(a);if((await i.getFileInfo(a)).ignored)continue;let l=await i.format(n,{...f,filepath:a});l!==n&&(await e(a,l,"utf-8"),c++)}catch(t){}c>0&&l.info(`Formatted ${c} file${1!==c?"s":""}`)};export const checkFiles=async(e,n)=>{let{logger:f}=n,l=await o("."===e?"**/*":e,{gitignore:!0,ignore:a}),s=[];for(let e of l)try{let o=r(e),a=await t(o,"utf-8"),n=await i.resolveConfig(o);if((await i.getFileInfo(o)).ignored)continue;await i.check(a,{...n,filepath:o})||s.push(e)}catch(t){}return!(s.length>0)||(f.error(`Found ${s.length} unformatted file${1!==s.length?"s":""}:`),s.forEach(t=>{console.error(` - ${t}`)}),!1)};
1
+ import{readFile as t,writeFile as e}from"fs/promises";import{globby as o}from"globby";import{resolve as i}from"path";import*as r from"prettier";let a=["**/node_modules/**","**/dist/**","**/.git/**","**/.phoenix/**","**/locales/*/*.ts","pnpm-lock.yaml",".linguirc"];export const formatFiles=async(n,l)=>{let{logger:f}=l,s=await o("."===n?"**/*":n,{gitignore:!0,ignore:a}),c=0;for(let o of s)try{let a=i(o),n=await t(a,"utf-8"),l=await r.resolveConfig(a);if((await r.getFileInfo(a)).ignored)continue;let f=await r.format(n,{...l,filepath:a});f!==n&&(await e(a,f,"utf-8"),c++)}catch(t){}c>0&&f.info(`Formatted ${c} file${1!==c?"s":""}`)};export const checkFiles=async(e,n)=>{let{logger:l}=n,f=await o("."===e?"**/*":e,{gitignore:!0,ignore:a}),s=[];for(let e of f)try{let o=i(e),a=await t(o,"utf-8"),n=await r.resolveConfig(o);if((await r.getFileInfo(o)).ignored)continue;await r.check(a,{...n,filepath:o})||s.push(e)}catch(t){}return!(s.length>0)||(l.error(`Found ${s.length} unformatted file${1!==s.length?"s":""}:`),s.forEach(t=>{console.error(` - ${t}`)}),!1)};
@@ -1,2 +1,2 @@
1
1
  #!/usr/bin/env node --stack-size=8192
2
- import{mkdir as e,readFile as o,rm as a,writeFile as r}from"node:fs/promises";import{dirname as t,join as i}from"node:path";import{format as s}from"prettier";import{prettierrc as n}from"@salsita-ai/common/prettier";import{buildPhoenixDefinitions as m,generateStandaloneCommonAdminFiles as c,parseCommonAdminSpec as p}from"#package/application-spec";import{getAllPhxDefinitions as l}from"#package/domain";import{swcEvalExpressionParser as d}from"../application-spec/swc-module-analyzer.js";let f=async e=>{try{return await o(e,"utf-8")}catch{return}},w=async(e,o)=>{let a=await s(o,{...n,filepath:e});await f(e)!==a&&await r(e,a)},v="./src/domain/admin-domain/__generated",h=m(l()),u=p(h,{evalExpressionParser:d});if(!u.ok)throw console.error(u.errors),Error("Common admin application spec contains errors");let j=c({enhancedModelImportPaths:{domainModel:"../../core/model.js",model:"./model/index.js",violation:"../../invariants/violation.js"},phxDefinitions:h,spec:u.value,versionImportPaths:{model:"../../../../core/model.js",reflection:"../../../../core/reflection.js"}});await e(v,{recursive:!0}),await Promise.all(j.map(async o=>{let a=i(v,o.path);await e(t(a),{recursive:!0}),await w(a,o.content)})),await a(i(v,"presets.ts"),{force:!0});
2
+ import{mkdir as e,readFile as r,rm as a,writeFile as o}from"node:fs/promises";import{dirname as i,join as t}from"node:path";import{format as n}from"prettier";import{prettierrc as s}from"@salsita-ai/common/prettier";import{buildPhoenixDefinitions as m,generateStandaloneCommonAdminFiles as c,parseCommonAdminSpec as p}from"#package/application-spec";import{getAllPhxDefinitions as l}from"#package/domain";import{swcEvalExpressionParser as d}from"../application-spec/swc-module-analyzer.js";let f=async e=>{try{return await r(e,"utf-8")}catch{return}},w=async(e,r)=>{let a=await n(r,{...s,filepath:e});await f(e)!==a&&await o(e,a)},h="./src/domain/admin-domain/__generated",u=m(l()),v=p(u,{evalExpressionParser:d});if(!v.ok)throw console.error(v.errors),Error("Common admin application spec contains errors");let j=c({enhancedModelImportPaths:{domainModel:"../../core/index.js",model:"./model/index.js",violation:"../../core/index.js"},phxDefinitions:u,spec:v.value,versionImportPaths:{model:"../../../../core/index.js",reflection:"../../../../core/index.js"}});await e(h,{recursive:!0}),await Promise.all(j.map(async r=>{let a=t(h,r.path);await e(i(a),{recursive:!0}),await w(a,r.content)})),await a(t(h,"presets.ts"),{force:!0});
@@ -2,6 +2,8 @@ import { type ViteDevServer } from 'vite';
2
2
  import type { Logger } from '../utils/index.js';
3
3
  import type { PhoenixPubSub } from './phoenix-pubsub.js';
4
4
  import type { VariantFileEdit } from './variant-file-session.js';
5
+ export declare const WATCH_PATTERNS: string[];
6
+ export declare const IGNORED_PATTERNS: string[];
5
7
  /** Configuration for {@link ApplicationSpecProjectWatcher}. */
6
8
  export interface ApplicationSpecProjectWatcherConfig {
7
9
  readonly pubsub: PhoenixPubSub;
@@ -1,4 +1,4 @@
1
- import{resolve as e}from"path";import t from"promise-queue";import{Subject as i,buffer as s,debounceTime as r}from"rxjs";import{createServer as o,normalizePath as n}from"vite";import{watch as l}from"#package/watch";import{ApplicationSpecBuilder as h}from"../application-spec/application-spec-builder.js";import{logDiagnostics as a}from"../application-spec/metrics/index.js";import{syncTemplateFiles as c}from"../application-spec/template-files.js";import{buildWebhooks as u}from"../webhooks/index.js";import{getViteDevConfig as p}from"./vite-config.js";let g=["spec/**/*.{yaml,yml}","src/**/*.{ts,tsx,yaml,yml,json,html,css}","templates/*.html",".env",".env.generated"],d=["src/locales/**/*.{ts,tsx}",".phoenix/**"];export class ApplicationSpecProjectWatcher{watcher=null;subscription=null;rebuildQueue=new t(1,1/0);changeSubject$=new i;viteServer=null;pubsub;logger;onRebuilt;onViteServerChange;builder;useServer;isShuttingDown=!1;suspended=!1;heldChanges=new Set;constructor(e){this.pubsub=e.pubsub,this.logger=e.logger,this.onRebuilt=e.onRebuilt,this.onViteServerChange=e.onViteServerChange,this.builder=new h({logger:e.logger,sdkVersion:e.sdkVersion,projectSlug:e.projectSlug,environmentSlug:e.environmentSlug,cliUseWorkspace:e.cliUseWorkspace,name:e.name,description:e.description,enableEditor:e.enableEditor,inlineTemplates:e.inlineTemplates}),this.useServer=e.useServer}start(e){this.viteServer=e,this.setupFileWatcher(),this.setupRebuildSubscription()}applyVariantFiles(e){this.rebuildQueue.add(async()=>{this.isShuttingDown||await this.rebuild(new Set(e.map(e=>e.fileName)),!1,!0)})}suspend(){this.suspended=!0}resume(){for(let e of(this.suspended=!1,this.heldChanges))this.changeSubject$.next(e);this.heldChanges.clear()}async close(){this.isShuttingDown=!0,this.watcher&&(await this.watcher.close(),this.watcher=null),this.subscription?.unsubscribe(),this.changeSubject$.complete()}setupFileWatcher(){this.watcher=l(g,{ignored:d,cwd:process.cwd(),persistent:!0,ignoreInitial:!1}),this.watcher.on("all",(e,t)=>{if("change"===e||"add"===e||"unlink"===e){if(this.suspended)return void this.heldChanges.add(t);this.logger.info(`
2
- 📝 Detected ${e}: ${t}`),this.changeSubject$.next(t)}})}setupRebuildSubscription(){let e=this.changeSubject$.pipe(r(10));this.subscription=this.changeSubject$.pipe(s(e)).subscribe(e=>{let t=new Set(e),i=t.has(".env");this.rebuildQueue.add(async()=>{this.isShuttingDown||(this.logger.info(`
1
+ import{mkdirSync as e}from"fs";import{resolve as t}from"path";import i from"promise-queue";import{Subject as s,buffer as r,debounceTime as o}from"rxjs";import{createServer as n,normalizePath as l}from"vite";import{watch as a}from"#package/watch";import{ApplicationSpecBuilder as h}from"../application-spec/application-spec-builder.js";import{logDiagnostics as c}from"../application-spec/metrics/index.js";import{syncTemplateFiles as u}from"../application-spec/template-files.js";import{buildWebhooks as p}from"../webhooks/index.js";import{getViteDevConfig as g}from"./vite-config.js";export const WATCH_PATTERNS=["spec/**/*.{yaml,yml}","src/**/*.{ts,tsx,yaml,yml,json,html,css}","templates/*.html",".env",".env.generated",".phoenix/.env.generated"];export const IGNORED_PATTERNS=["src/locales/**/*.{ts,tsx}",".phoenix/!(.env.generated)/**"];export class ApplicationSpecProjectWatcher{watcher=null;subscription=null;rebuildQueue=new i(1,1/0);changeSubject$=new s;viteServer=null;pubsub;logger;onRebuilt;onViteServerChange;builder;useServer;isShuttingDown=!1;suspended=!1;heldChanges=new Set;constructor(e){this.pubsub=e.pubsub,this.logger=e.logger,this.onRebuilt=e.onRebuilt,this.onViteServerChange=e.onViteServerChange,this.builder=new h({logger:e.logger,sdkVersion:e.sdkVersion,projectSlug:e.projectSlug,environmentSlug:e.environmentSlug,cliUseWorkspace:e.cliUseWorkspace,name:e.name,description:e.description,enableEditor:e.enableEditor,inlineTemplates:e.inlineTemplates}),this.useServer=e.useServer}start(e){this.viteServer=e,this.setupFileWatcher(),this.setupRebuildSubscription()}applyVariantFiles(e){this.rebuildQueue.add(async()=>{this.isShuttingDown||await this.rebuild(new Set(e.map(e=>e.fileName)),!1,!0)})}suspend(){this.suspended=!0}resume(){for(let e of(this.suspended=!1,this.heldChanges))this.changeSubject$.next(e);this.heldChanges.clear()}async close(){this.isShuttingDown=!0,this.watcher&&(await this.watcher.close(),this.watcher=null),this.subscription?.unsubscribe(),this.changeSubject$.complete()}setupFileWatcher(){e(t(process.cwd(),"src"),{recursive:!0}),this.watcher=a(WATCH_PATTERNS,{ignored:IGNORED_PATTERNS,cwd:process.cwd(),persistent:!0,ignoreInitial:!1}),this.watcher.on("all",(e,t)=>{if("change"===e||"add"===e||"unlink"===e){if(this.suspended)return void this.heldChanges.add(t);this.logger.info(`
2
+ 📝 Detected ${e}: ${t}`),this.changeSubject$.next(t)}})}setupRebuildSubscription(){let e=this.changeSubject$.pipe(o(10));this.subscription=this.changeSubject$.pipe(r(e)).subscribe(e=>{let t=new Set(e),i=t.has(".env");this.rebuildQueue.add(async()=>{this.isShuttingDown||(this.logger.info(`
3
3
  🔨 Rebuilding spec files...
4
- `),await this.rebuild(t,i,!1))})})}async rebuild(t,i,s){try{let r=this.viteServer;if(!r)throw Error("Cannot rebuild the project: the watcher has no Vite server yet, because it was not started. Start the watcher before applying files");let l=await c();if(this.isShuttingDown)return;let h=await this.builder.build({compile:!s});if(this.isShuttingDown)return;if(a(h.diagnostics,this.logger),!h.ok){for(let e of h.errors)this.logger.error(`[${e.code}] ${e.message}${e.file?` (${e.file})`:""}`);this.pubsub.specFile$.next({rawProjectFiles:h.rawProjectFiles,projectRoot:process.cwd()});return}this.onRebuilt?.();let{application:g,changedFiles:d}=h,w=r.moduleGraph,b=Date.now(),f=new Set,m=process.cwd(),S=e=>{let t=w.getModulesByFile(n(e));if(t)for(let e of t)w.invalidateModule(e,f,b,!0)};for(let i of t)S(e(m,i));for(let t of d)S(e(m,`.phoenix/${t.path}`));if(this.pubsub.specFile$.next({rawProjectFiles:g.rawProjectFiles,projectRoot:process.cwd(),configurationSchemaHash:g.applicationSpec.configurator.configurationSchema.hash}),this.isShuttingDown)return;if(i){if(await r.close(),this.isShuttingDown)return;let e=await p({templateFiles:l});if(this.isShuttingDown)return;let t=await o(e);if(this.isShuttingDown||(await t.listen(),this.isShuttingDown))return void await t.close();this.viteServer=t,this.onViteServerChange?.(t),this.logger.success("Vite server restarted (env changed)")}if(this.useServer&&!s){if(this.logger.step("Building webhooks"),await u({experimental:!0,skipNodeEnvOverride:!0,webhookEntryPoint:"./.phoenix/.swc/.phoenix/webhook.js",preserveExistingOutput:!0}),this.isShuttingDown)return;this.logger.success("Webhooks rebuilt successfully")}this.logger.success("Project files rebuilt successfully")}catch(e){this.logger.error(`Build failed: ${e instanceof Error?e.message:String(e)}`,e)}}}
4
+ `),await this.rebuild(t,i,!1))})})}async rebuild(e,i,s){try{let r=this.viteServer;if(!r)throw Error("Cannot rebuild the project: the watcher has no Vite server yet, because it was not started. Start the watcher before applying files");let o=await u();if(this.isShuttingDown)return;let a=await this.builder.build({compile:!s});if(this.isShuttingDown)return;if(c(a.diagnostics,this.logger),!a.ok){for(let e of a.errors)this.logger.error(`[${e.code}] ${e.message}${e.file?` (${e.file})`:""}`);this.pubsub.specFile$.next({rawProjectFiles:a.rawProjectFiles,projectRoot:process.cwd()});return}this.onRebuilt?.();let{application:h,changedFiles:d}=a,w=r.moduleGraph,b=Date.now(),f=new Set,S=process.cwd(),m=e=>{let t=w.getModulesByFile(l(e));if(t)for(let e of t)w.invalidateModule(e,f,b,!0)};for(let i of e)m(t(S,i));for(let e of d)m(t(S,`.phoenix/${e.path}`));if(this.pubsub.specFile$.next({rawProjectFiles:h.rawProjectFiles,projectRoot:process.cwd(),configurationSchemaHash:h.applicationSpec.configurator.configurationSchema.hash}),this.isShuttingDown)return;if(i){if(await r.close(),this.isShuttingDown)return;let e=await g({templateFiles:o});if(this.isShuttingDown)return;let t=await n(e);if(this.isShuttingDown||(await t.listen(),this.isShuttingDown))return void await t.close();this.viteServer=t,this.onViteServerChange?.(t),this.logger.success("Vite server restarted (env changed)")}if(this.useServer&&!s){if(this.logger.step("Building webhooks"),await p({experimental:!0,skipNodeEnvOverride:!0,webhookEntryPoint:"./.phoenix/.swc/.phoenix/webhook.js",preserveExistingOutput:!0}),this.isShuttingDown)return;this.logger.success("Webhooks rebuilt successfully")}this.logger.success("Project files rebuilt successfully")}catch(e){this.logger.error(`Build failed: ${e instanceof Error?e.message:String(e)}`,e)}}}
@@ -1,2 +1,2 @@
1
- import{writeFile as e}from"node:fs/promises";import{createApiBaseClient as i}from"#package/client";import{resolveApplicationSpecDeploymentData as t}from"../application-spec/index.js";import{formatEnvContent as r,uploadFilesWithPresignedUrls as a}from"../utils/index.js";import{getDevelopmentCredentialHint as o,getDevelopmentHeaders as s}from"./development-credential.js";export const prepareDevelopmentEnvironment=async(n,l)=>{let{logger:p}=l,{projectSlug:d,environmentSlug:m,serverUrl:c,credential:h,outFile:v,skipUpload:f,overrideSchema:u,projectVersion:g}=n;p.step("Preparing development environment"),p.info(`Preparing development environment for project "${d}", environment "${m}"`);let E=i(c);p.debug(`Using server URL: ${c}`);let b=await t({skipUpload:f,logger:p});p.info("Preparing and activating the development deployment on the server...");let{data:P,error:$}=await E.POST("/environments/development/prepare",{body:{applicationVersion:b.applicationVersion,publishedDataHash:b.publishedDataHash,useAuthHook:b.useAuthHook,overrideSchema:u,configurationSchema:{version:b.schemaVersion,schema:b.schema},adminConfigurationSchema:b.adminSchema?{schema:b.adminSchema,version:b.adminSchemaVersion}:void 0,chat:b.chat,embeddings:b.embeddings,assistant:b.assistant,acl:{canCreate:b.aclCanCreate},privateFiles:[...b.assets.privateFilePaths],publicFiles:[...b.assets.publicFilePaths],sdkVersion:g},headers:s(h,{projectSlug:d,environmentSlug:m})});if($)throw Error(`Failed to prepare development deployment for ${d}/${m} on ${c}: ${$.message}. ${o(h,d)}`);if(!P)throw Error("No data returned from server while preparing the development deployment.");let{environmentVariables:y,privateUploadUrls:w,publicUploadUrls:F}=P;if(f)p.debug("Skipping file upload");else{p.info("Uploading files to S3...");let e={privateFiles:[...b.assets.privateFilesFullPaths].map(e=>{let i=e.replace("assets/private/",""),t=w[i];if(!t)throw Error(`No upload URL provided for private file ${i}, the server did not return a presigned URL for this file, please verify the file exists in the assets/private directory.`);return{localPath:e,uploadUrl:t}}),publicFiles:[...b.assets.publicFilesFullPaths].map(e=>{let i=e.replace("assets/public/",""),t=F[i];if(!t)throw Error(`No upload URL provided for public file ${i}, the server did not return a presigned URL for this file, please verify the file exists in the assets/public directory.`);return{localPath:e,uploadUrl:t}})};await a(e,{logger:p})}try{await e(v,`${r({...y,PHOENIX_PROJECT_SLUG:d,PHOENIX_ENVIRONMENT_SLUG:m,PHOENIX_SERVER_URL:c})}
1
+ import{writeFile as e}from"node:fs/promises";import{createApiBaseClient as i}from"#package/client";import{resolveApplicationSpecDeploymentData as t}from"../application-spec/index.js";import{formatEnvContent as r,uploadFilesWithPresignedUrls as a}from"../utils/index.js";import{getDevelopmentCredentialHint as o,getDevelopmentHeaders as s}from"./development-credential.js";export const prepareDevelopmentEnvironment=async(n,l)=>{let{logger:p}=l,{projectSlug:d,environmentSlug:m,serverUrl:c,credential:h,outFile:v,skipUpload:f,overrideSchema:u,projectVersion:g}=n;p.step("Preparing development environment"),p.info(`Preparing development environment for project "${d}", environment "${m}"`);let E=i(c);p.debug(`Using server URL: ${c}`);let b=await t({skipUpload:f,logger:p});p.info("Preparing and activating the development deployment on the server...");let{data:P,error:$}=await E.POST("/environments/development/prepare",{body:{applicationVersion:b.applicationVersion,publishedDataHash:b.publishedDataHash,useAuthHook:b.useAuthHook,overrideSchema:u,configurationSchema:{version:b.schemaVersion,schema:b.schema},adminConfigurationSchema:b.adminSchema?{schema:b.adminSchema,version:b.adminSchemaVersion}:void 0,chat:b.chat,embeddings:b.embeddings,...b.assistant?{assistant:!0}:{},acl:{canCreate:b.aclCanCreate},privateFiles:[...b.assets.privateFilePaths],publicFiles:[...b.assets.publicFilePaths],sdkVersion:g},headers:s(h,{projectSlug:d,environmentSlug:m})});if($)throw Error(`Failed to prepare development deployment for ${d}/${m} on ${c}: ${$.message}. ${o(h,d)}`);if(!P)throw Error("No data returned from server while preparing the development deployment.");let{environmentVariables:y,privateUploadUrls:w,publicUploadUrls:F}=P;if(f)p.debug("Skipping file upload");else{p.info("Uploading files to S3...");let e={privateFiles:[...b.assets.privateFilesFullPaths].map(e=>{let i=e.replace("assets/private/",""),t=w[i];if(!t)throw Error(`No upload URL provided for private file ${i}, the server did not return a presigned URL for this file, please verify the file exists in the assets/private directory.`);return{localPath:e,uploadUrl:t}}),publicFiles:[...b.assets.publicFilesFullPaths].map(e=>{let i=e.replace("assets/public/",""),t=F[i];if(!t)throw Error(`No upload URL provided for public file ${i}, the server did not return a presigned URL for this file, please verify the file exists in the assets/public directory.`);return{localPath:e,uploadUrl:t}})};await a(e,{logger:p})}try{await e(v,`${r({...y,PHOENIX_PROJECT_SLUG:d,PHOENIX_ENVIRONMENT_SLUG:m,PHOENIX_SERVER_URL:c})}
2
2
  `),p.debug(`Environment variables written to ${v}`)}catch{throw Error(`Failed to write environment variables to file at ${v}, please verify you have write permissions to this location.`)}p.info(`Project: ${d}`),p.info(`Environment: ${m}`),p.info(`Deployment ID: ${y.DEPLOYMENT_ID}`),p.success("Development environment prepared successfully!")};
@@ -3,6 +3,7 @@ export interface SourceArchive {
3
3
  readonly path: string;
4
4
  readonly fileCount: number;
5
5
  readonly size: number;
6
+ readonly hasConversationLog: boolean;
6
7
  readonly cleanup: () => Promise<void>;
7
8
  }
8
9
  /** What `extractSourceArchive` wrote and what it left out. */
@@ -1 +1 @@
1
- import{execFile as e}from"node:child_process";import{createReadStream as r,createWriteStream as t}from"node:fs";import{lstat as o,mkdir as i,mkdtemp as a,readdir as n,rm as s,stat as c,writeFile as l}from"node:fs/promises";import{tmpdir as h}from"node:os";import{dirname as p,join as f}from"node:path";import{Transform as d}from"node:stream";import{pipeline as w}from"node:stream/promises";import{promisify as m}from"node:util";import{createGunzip as u}from"node:zlib";import{extract as g}from"tar-stream";import{isProjectFile as y,listProjectEntries as v}from"../application-spec/project-files.js";let x=m(e);export const createSourceArchive=async e=>{let r=await Promise.all((await v(e)).map(async r=>({name:r,entry:await o(f(e,r))}))),t=r.filter(({entry:e})=>!e.isDirectory()&&(!e.isFile()||e.nlink>1)),i=r.filter(({entry:e})=>e.isFile()).map(({name:e})=>e);if(t.length>0)throw Error(`These project files are links or special files, which builds do not accept: ${t.map(({name:e})=>e).join(", ")}. Replace them with regular files and deploy again.`);if(0===i.length)throw Error(`No project files were found in ${e}, so there is nothing to deploy. Run phoenix deploy in the folder of an application-spec project.`);let n=await a(f(h(),"phoenix-deploy-")),p="sources.tgz",d=f(n,p),w=f(n,"files");try{await l(w,i.join("\0")),await x("tar",["-czf",p,"-C",e,"--null","-T",w],{cwd:n,env:{...process.env,COPYFILE_DISABLE:"1"}})}catch(r){await s(n,{recursive:!0,force:!0});let e=r instanceof Error?r.message:String(r);throw Error(`Packing the project with tar failed: ${e}. Check that tar is installed and on the PATH.`)}return{path:d,fileCount:i.length,size:(await c(d)).size,cleanup:()=>s(n,{recursive:!0,force:!0})}};let E=(e,...r)=>e instanceof Error&&"code"in e&&"string"==typeof e.code&&r.includes(e.code),j=async e=>{try{return 0===(await n(e)).length}catch(e){if(E(e,"ENOENT"))return!0;throw e}},T=class ArchiveRefusal extends Error{},b=e=>e.length>0&&!e.startsWith("/")&&!e.includes("\\")&&!/^[A-Za-z]:/.test(e)&&!/[\x00-\x1f\x7f]/.test(e)&&!e.split("/").includes("..");export const extractSourceArchive=async e=>{let o,a,{archivePath:n,targetDir:l}=e,h=(await c(n)).size;if(h>0xc800000)throw Error(`The source archive is ${h} bytes, over the 209715200 byte limit. Remove large files from the project and deploy again.`);if(!await j(l))throw Error(`The folder ${l} is not empty, and extracted sources must not mix with existing files. Extract into a new or empty folder.`);let m=g(),v=new AbortController,x=w(r(n),u(),(a=0,new d({transform(e,r,t){(a+=e.length)>0x40000000?t(new T("The source archive extracts to more than 1073741824 bytes. Remove large files from the project and deploy again.")):t(null,e)}})),m).catch(e=>{o??=e,v.abort()}),$=[],z=0,R=0;try{for await(let e of m){let{type:r}=e.header,o=e.header.name.replace(/^(\.\/)+/,""),a=JSON.stringify(o);if("directory"===r){e.resume();continue}if((R+=1)>1e5)throw new T("The source archive has more than 100000 files. Remove generated or unused files from the project and deploy again.");if(!b(o))throw new T(`The source archive contains ${a}, which is not a plain relative path inside the project. Pack the project with phoenix deploy.`);if("file"!==r)throw new T(`The source archive contains ${a}, which is a ${r??"special file"}. Builds accept only regular files; replace it with a regular file and deploy again.`);if(!y(o)){$.push(o),e.resume();continue}let n=f(l,...o.split("/"));try{await i(p(n),{recursive:!0}),await w(e,t(n,{flags:"wx"}),{signal:v.signal})}catch(e){if(E(e,"EEXIST","ENOTDIR","EISDIR"))throw new T(`The source archive contains ${a}, which repeats or collides with an earlier entry, so its content is ambiguous. Pack the project with phoenix deploy.`);throw e}z+=1}if(await x,void 0!==o)throw o}catch(t){let e=t instanceof T?t:o??t;if(m.destroy(),await x,await s(l,{recursive:!0,force:!0}),e instanceof T)throw e;let r=e instanceof Error?e.message:String(e);throw Error(`The source archive could not be read: ${r}. It is truncated or not a gzip tarball; pack the project with phoenix deploy.`)}return{fileCount:z,skipped:$}};
1
+ import{execFile as e}from"node:child_process";import{createReadStream as r,createWriteStream as t}from"node:fs";import{lstat as o,mkdir as i,mkdtemp as a,readdir as n,rm as s,stat as c,writeFile as l}from"node:fs/promises";import{tmpdir as h}from"node:os";import{dirname as p,join as f}from"node:path";import{Transform as d}from"node:stream";import{pipeline as w}from"node:stream/promises";import{promisify as m}from"node:util";import{createGunzip as u}from"node:zlib";import{extract as g}from"tar-stream";import{isProjectFile as y,listProjectEntries as v}from"../application-spec/project-files.js";let x=m(e);export const createSourceArchive=async e=>{let r=(await n(e)).includes("conversation.log"),t=[...await v(e),...r?["conversation.log"]:[]],i=await Promise.all(t.map(async r=>({name:r,entry:await o(f(e,r))})));if(i.some(({name:e,entry:r})=>"conversation.log"===e&&r.isDirectory()))throw Error("conversation.log is a directory. Replace it with a regular transcript file and deploy again.");let p=i.filter(({entry:e})=>!e.isDirectory()&&(!e.isFile()||e.nlink>1)),d=i.filter(({entry:e})=>e.isFile()).map(({name:e})=>e);if(p.length>0)throw Error(`These project files are links or special files, which builds do not accept: ${p.map(({name:e})=>e).join(", ")}. Replace them with regular files and deploy again.`);if(0===d.length)throw Error(`No project files were found in ${e}, so there is nothing to deploy. Run phoenix deploy in the folder of an application-spec project.`);let w=await a(f(h(),"phoenix-deploy-")),m="sources.tgz",u=f(w,m),g=f(w,"files");try{await l(g,d.join("\0")),await x("tar",["-czf",m,"-C",e,"--null","-T",g],{cwd:w,env:{...process.env,COPYFILE_DISABLE:"1"}})}catch(r){await s(w,{recursive:!0,force:!0});let e=r instanceof Error?r.message:String(r);throw Error(`Packing the project with tar failed: ${e}. Check that tar is installed and on the PATH.`)}return{path:u,fileCount:d.length,size:(await c(u)).size,hasConversationLog:r,cleanup:()=>s(w,{recursive:!0,force:!0})}};let E=(e,...r)=>e instanceof Error&&"code"in e&&"string"==typeof e.code&&r.includes(e.code),j=async e=>{try{return 0===(await n(e)).length}catch(e){if(E(e,"ENOENT"))return!0;throw e}},T=class ArchiveRefusal extends Error{},b=e=>e.length>0&&!e.startsWith("/")&&!e.includes("\\")&&!/^[A-Za-z]:/.test(e)&&!/[\x00-\x1f\x7f]/.test(e)&&!e.split("/").includes("..");export const extractSourceArchive=async e=>{let o,a,{archivePath:n,targetDir:l}=e,h=(await c(n)).size;if(h>0xc800000)throw Error(`The source archive is ${h} bytes, over the 209715200 byte limit. Remove large files from the project and deploy again.`);if(!await j(l))throw Error(`The folder ${l} is not empty, and extracted sources must not mix with existing files. Extract into a new or empty folder.`);let m=g(),v=new AbortController,x=w(r(n),u(),(a=0,new d({transform(e,r,t){(a+=e.length)>0x40000000?t(new T("The source archive extracts to more than 1073741824 bytes. Remove large files from the project and deploy again.")):t(null,e)}})),m).catch(e=>{o??=e,v.abort()}),$=[],R=0,z=0;try{for await(let e of m){let{type:r}=e.header,o=e.header.name.replace(/^(\.\/)+/,""),a=JSON.stringify(o);if("directory"===r){e.resume();continue}if((z+=1)>1e5)throw new T("The source archive has more than 100000 files. Remove generated or unused files from the project and deploy again.");if(!b(o))throw new T(`The source archive contains ${a}, which is not a plain relative path inside the project. Pack the project with phoenix deploy.`);if("file"!==r)throw new T(`The source archive contains ${a}, which is a ${r??"special file"}. Builds accept only regular files; replace it with a regular file and deploy again.`);if(!y(o)){$.push(o),e.resume();continue}let n=f(l,...o.split("/"));try{await i(p(n),{recursive:!0}),await w(e,t(n,{flags:"wx"}),{signal:v.signal})}catch(e){if(E(e,"EEXIST","ENOTDIR","EISDIR"))throw new T(`The source archive contains ${a}, which repeats or collides with an earlier entry, so its content is ambiguous. Pack the project with phoenix deploy.`);throw e}R+=1}if(await x,void 0!==o)throw o}catch(t){let e=t instanceof T?t:o??t;if(m.destroy(),await x,await s(l,{recursive:!0,force:!0}),e instanceof T)throw e;let r=e instanceof Error?e.message:String(e);throw Error(`The source archive could not be read: ${r}. It is truncated or not a gzip tarball; pack the project with phoenix deploy.`)}return{fileCount:R,skipped:$}};
@@ -1,3 +1,3 @@
1
- import{transform as e}from"@swc/core";import{remove as t}from"fs-extra";import{copyFile as s,mkdir as o,readFile as a,writeFile as i}from"fs/promises";import{globby as r}from"globby";import{dirname as c,relative as l,resolve as n}from"path";import{Subject as p}from"rxjs";import{watch as m}from"#package/watch";import{createLogger as w}from"../utils/index.js";let u=()=>({sourceMaps:!0,module:{type:"es6"},jsc:{target:"es2022",parser:{syntax:"typescript",tsx:!0},transform:{react:{runtime:"automatic"}},keepClassNames:!0,experimental:{plugins:[["@lingui/swc-plugin",{}]]}}}),d=async(e,t,a)=>{let i=process.cwd(),p=n(i,e),m=n(i,t),w=await r(["**/*.{html,css,json,txt,md}","**/.env*"],{cwd:p,ignore:["**/*.{spec,test}.{html,css,json,txt,md}","**/__tests__/**","**/__mocks__/**","**/tsconfig.json"],absolute:!1}),u=0,d=0;for(let e of w)try{let t=n(p,e),a=n(m,e);await o(c(a),{recursive:!0}),await s(t,a),u++}catch(t){d++,console.error(`Failed to copy ${l(i,n(p,e))}:`,t)}if(d>0)throw Error(`Failed to copy ${d} file(s)`);u>0&&a.debug(`Copied ${u} non-compilable file(s)`)};export const compileWithSwc=async(s,p)=>{let{sourceDir:m="src",outDir:f="./node_modules/.phoenix"}=s??{},g=p?.logger??w(),h=process.cwd(),x=n(h,m),_=n(h,f);await t(_);let y=await r(["**/*.{ts,tsx}"],{cwd:x,ignore:["**/*.{spec,test}.{ts,tsx}","**/__tests__/**","**/__mocks__/**"],absolute:!1}),b=u(),$=0,j=0;for(let t of y)try{let s=n(x,t),r=n(_,t.replace(/\.tsx?$/,".js")),l=await a(s,"utf-8"),p=await e(l,{...b,filename:s,sourceMaps:!0,outputPath:r});await o(c(r),{recursive:!0}),await i(r,p.code,"utf-8"),p.map&&await i(`${r}.map`,p.map,"utf-8"),$++}catch(e){j++,console.error(`Failed to compile ${l(h,n(x,t))}:`,e)}if(j>0)throw Error(`Failed to compile ${j} file(s)`);g.isDebug&&g.debug(`Compiled ${$} file(s) with swc`),await d(m,f,g)};let f=async(t,s,r)=>{let l=process.cwd(),p=n(l,s),m=n(l,r),w=u(),d=n(p,t),f=n(m,t.replace(/\.tsx?$/,".js")),g=await a(d,"utf-8"),h=await e(g,{...w,filename:d,sourceMaps:!0,outputPath:f});await o(c(f),{recursive:!0}),await i(f,h.code,"utf-8"),h.map&&await i(`${f}.map`,h.map,"utf-8")},g=async(e,t,a)=>{let i=process.cwd(),r=n(i,t),l=n(i,a),p=n(r,e),m=n(l,e);await o(c(m),{recursive:!0}),await s(p,m)};export const watchWithSwc=async(e,t)=>{let{sourceDir:s="src",outDir:o="./node_modules/.phoenix"}=e??{},a=t?.logger??w(),i=n(process.cwd(),s);a.isDebug&&a.step("Running initial SWC compilation"),await compileWithSwc({sourceDir:s,outDir:o},t),a.isDebug&&a.success("Initial compilation complete");let r=new p,c=m(["**/*.{ts,tsx,html,css,json,txt,md}","../.env*"],{cwd:i,ignored:["**/*.{spec,test}.{ts,tsx}","**/__tests__/**","**/cache.json"],persistent:!0,ignoreInitial:!0});return c.on("all",(e,t)=>{("change"===e||"add"===e)&&r.next({file:t,type:e})}),r.subscribe(async({file:e})=>{let t=l(i,n(i,e));try{e.match(/\.tsx?$/)?(await f(t,s,o),a.fileChanged(t)):(e.match(/\.(html|css|json|txt|md)$/)||e.match(/\.env/))&&(await g(t,s,o),a.fileChanged(t))}catch(e){a.error(`Failed to process ${t}`),a.isDebug&&console.error(e)}}),a.isDebug&&console.log(`
1
+ import{transform as e}from"@swc/core";import{remove as t}from"fs-extra";import{copyFile as s,mkdir as o,readFile as a,writeFile as i}from"fs/promises";import{globby as r}from"globby";import{dirname as c,relative as l,resolve as n}from"path";import{Subject as p}from"rxjs";import{watch as m}from"#package/watch";import{createLogger as w}from"../utils/index.js";let d=()=>({sourceMaps:!0,module:{type:"es6"},jsc:{target:"es2022",parser:{syntax:"typescript",tsx:!0},transform:{react:{runtime:"automatic"}},keepClassNames:!0,experimental:{plugins:[["@lingui/swc-plugin",{}]]}}}),u=async(e,t,a)=>{let i=process.cwd(),p=n(i,e),m=n(i,t),w=await r(["**/*.{html,css,json,txt,md}","**/.env*"],{cwd:p,ignore:["**/*.{spec,test}.{html,css,json,txt,md}","**/__tests__/**","**/__mocks__/**","**/tsconfig.json",".env.generated"],absolute:!1}),d=0,u=0;for(let e of w)try{let t=n(p,e),a=n(m,e);await o(c(a),{recursive:!0}),await s(t,a),d++}catch(t){u++,console.error(`Failed to copy ${l(i,n(p,e))}:`,t)}if(u>0)throw Error(`Failed to copy ${u} file(s)`);d>0&&a.debug(`Copied ${d} non-compilable file(s)`)};export const compileWithSwc=async(s,p)=>{let{sourceDir:m="src",outDir:f="./node_modules/.phoenix"}=s??{},g=p?.logger??w(),h=process.cwd(),x=n(h,m),_=n(h,f);await t(_);let y=await r(["**/*.{ts,tsx}"],{cwd:x,ignore:["**/*.{spec,test}.{ts,tsx}","**/__tests__/**","**/__mocks__/**"],absolute:!1}),b=d(),$=0,j=0;for(let t of y)try{let s=n(x,t),r=n(_,t.replace(/\.tsx?$/,".js")),l=await a(s,"utf-8"),p=await e(l,{...b,filename:s,sourceMaps:!0,outputPath:r});await o(c(r),{recursive:!0}),await i(r,p.code,"utf-8"),p.map&&await i(`${r}.map`,p.map,"utf-8"),$++}catch(e){j++,console.error(`Failed to compile ${l(h,n(x,t))}:`,e)}if(j>0)throw Error(`Failed to compile ${j} file(s)`);g.isDebug&&g.debug(`Compiled ${$} file(s) with swc`),await u(m,f,g)};let f=async(t,s,r)=>{let l=process.cwd(),p=n(l,s),m=n(l,r),w=d(),u=n(p,t),f=n(m,t.replace(/\.tsx?$/,".js")),g=await a(u,"utf-8"),h=await e(g,{...w,filename:u,sourceMaps:!0,outputPath:f});await o(c(f),{recursive:!0}),await i(f,h.code,"utf-8"),h.map&&await i(`${f}.map`,h.map,"utf-8")},g=async(e,t,a)=>{let i=process.cwd(),r=n(i,t),l=n(i,a),p=n(r,e),m=n(l,e);await o(c(m),{recursive:!0}),await s(p,m)};export const watchWithSwc=async(e,t)=>{let{sourceDir:s="src",outDir:o="./node_modules/.phoenix"}=e??{},a=t?.logger??w(),i=n(process.cwd(),s);a.isDebug&&a.step("Running initial SWC compilation"),await compileWithSwc({sourceDir:s,outDir:o},t),a.isDebug&&a.success("Initial compilation complete");let r=new p,c=m(["**/*.{ts,tsx,html,css,json,txt,md}","../.env*"],{cwd:i,ignored:["**/*.{spec,test}.{ts,tsx}","**/__tests__/**","**/cache.json"],persistent:!0,ignoreInitial:!0});return c.on("all",(e,t)=>{("change"===e||"add"===e)&&r.next({file:t,type:e})}),r.subscribe(async({file:e})=>{let t=l(i,n(i,e));try{e.match(/\.tsx?$/)?(await f(t,s,o),a.fileChanged(t)):(e.match(/\.(html|css|json|txt|md)$/)||e.match(/\.env/))&&(await g(t,s,o),a.fileChanged(t))}catch(e){a.error(`Failed to process ${t}`),a.isDebug&&console.error(e)}}),a.isDebug&&console.log(`
2
2
  👀 Watching ${s} for changes...
3
3
  `),{stop:async()=>{await c.close(),a.isDebug&&a.info("SWC watcher stopped")}}};
@@ -1 +1 @@
1
- import{mkdir as e,readFile as t,realpath as i,rename as a,rm as r,writeFile as s}from"node:fs/promises";import{dirname as o,join as n,relative as l,resolve as p,sep as c}from"node:path";import h from"promise-queue";import{z as d}from"zod";import{RawProjectFiles as f,RuntimeReferenceStore as m,TextFile as w,buildPhoenixDefinitions as u,isTextFile as g,parseApplicationFiles as v}from"#package/application-spec";import{getAllPhxDefinitions as y}from"#package/domain";import{readApplicationFiles as b}from"../application-spec/application-spec-file-reader.js";import{generateAssistantPrompt as S}from"../application-spec/generate-assistant-prompt.js";import{swcEvalExpressionParser as F,swcModuleAnalyzer as N}from"../application-spec/swc-module-analyzer.js";let j=".phoenix/variant-recovery.json",k=d.array(d.object({fileName:d.string(),original:d.string().nullable(),applied:d.string().nullable(),previous:d.string().nullable().optional()})),E=e=>!e.includes("\\")&&!e.split("/").some(e=>".."===e||"."===e||""===e)&&(/^spec\/(?!admin\/).+\.yaml$/.test(e)||/^src\/(?:components|transformers|handlers|elements|_[^/]+)\/.+\.tsx?$/.test(e)),M=e=>`Left ${e} as it is: it was edited outside the variant comparison, so restoring the baseline would overwrite that edit. Review the file and remove what the option added to it`,$=async e=>{try{return await t(e,"utf8")}catch(e){if(e instanceof Error&&"code"in e&&"ENOENT"===e.code)return null;throw e}},C=async(t,i)=>{if(null===i)return void await r(t,{force:!0});await e(o(t),{recursive:!0});let n=`${t}.variant-${crypto.randomUUID()}`;try{await s(n,i),await a(n,t)}finally{await r(n,{force:!0})}},R=(e,t)=>{let i=v({rawProjectFiles:e,phxDefinitions:u(y())},{analyzer:N,evalExpressionParser:F,referenceStore:new m,logger:t});if(!i.ok)throw Error(`Cannot apply variant: ${i.errors.map(e=>`[${e.code}] ${e.message}`).join("\n")}`);let{configurator:a,admin:r,appMetadata:s,infra:o,dataSpec:n}=i.value.applicationSpec,l=i.value.categorizedFiles,p=new Set([...l.webhooks,...l.expressions,...l.actions,...l.invariants,...l.migrations,...l.adminMigrations,...l.adminExpressions,...l.adminInvariants,...l.handlers.filter(e=>"pinned"===e.webhookMembership||"named-handler"===e.webhookMembership),...l.components.filter(e=>"pinned"===e.webhookMembership),...l.adminComponents.filter(e=>"pinned"===e.webhookMembership)].flatMap(e=>[e.file.name,...e.deps]));return JSON.stringify({webhookFiles:e.files.filter(g).filter(e=>p.has(e.name)).sort((e,t)=>e.name.localeCompare(t.name)),appMetadata:s,infra:o,dataSpec:n,model:a.latestModel,schema:a.configurationSchema,dataSchemas:a.dataSchemas,adminModel:r.latestModel,adminSchema:r.configurationSchema,assistant:a.assistant?.sdl,assistantSettings:a.assistantServerSettings,assistantPrompt:a.assistant?S(a.assistant):null},(e,t)=>t instanceof Map?[...t.entries()]:t)};export class VariantFileSession{props;queue=new h(1,1/0);applied=new Map;baseline=new Map;contract;settled=!1;constructor(e){for(let t of(this.props=e,e.rawFiles.files))g(t)&&E(t.name)&&this.baseline.set(t.name,t.content);this.contract=R(e.rawFiles,e.logger)}static async create(e){await VariantFileSession.recover(e.projectRoot,e.logger);let t=await b({projectRoot:e.projectRoot,envs:{}});return new VariantFileSession({...e,rawFiles:t})}static async recover(e,t){let i=await $(n(e,j));if(null!==i){for(let a of k.parse(JSON.parse(i))){let i=await VariantFileSession.resolveFile(e,a.fileName),r=await $(i);if(r!==a.applied&&r!==a.original&&r!==a.previous){t.warn(M(a.fileName));continue}await C(i,a.original)}await r(n(e,j),{force:!0})}}static async resolveFile(e,t){if(!E(t))throw Error(`Cannot override ${t}: variants support frontend spec and TypeScript files only. Keep server code, dependencies, environment files and assets unchanged`);let a=await i(e),r=p(a,t),s=r;for(;;)try{let e=await i(s),r=l(a,e);if(".."===r||r.startsWith(`..${c}`))throw Error(`Cannot override ${t}: its symbolic link leaves the project`);if(e!==s)throw Error(`Cannot override ${t}: it uses a symbolic link. Variant edits require regular files so restoration preserves the original file`);break}catch(e){if(!(e instanceof Error&&"code"in e&&"ENOENT"===e.code))throw e;s=o(s)}return r}getFiles(){return[...this.baseline].map(([e,t])=>({fileName:e,content:t}))}apply(e){return this.queue.add(async()=>{if(this.settled)throw Error("This variant comparison has already ended");let t=new Map;for(let i of e){if(await VariantFileSession.resolveFile(this.props.projectRoot,i.fileName),t.has(i.fileName))throw Error(`Cannot apply variant: ${i.fileName} is specified twice`);t.set(i.fileName,i.content)}if(t.size>0){let e=this.props.rawFiles.files.filter(e=>!t.has(e.name));for(let[i,a]of t)null!==a&&e.push(w(i,a));if(R(f(e),this.props.logger)!==this.contract)throw Error("Cannot apply variant: it changes the model, schemas, data or deployment settings. Variants must need no server preparation")}await this.writeTarget(t,"refuse")})}finish(e){return this.queue.add(async()=>{this.settled||(e||await this.writeTarget(new Map,"keep"),await r(n(this.props.projectRoot,j),{force:!0}),this.settled=!0)})}async writeTarget(t,i){let a=new Set([...this.applied.keys(),...t.keys()]);if(0===a.size)return;let r=new Map;for(let e of a){let t=await VariantFileSession.resolveFile(this.props.projectRoot,e),a=this.applied.has(e)?this.applied.get(e):this.baseline.get(e)??null;if(await $(t)===a){r.set(e,t);continue}if("refuse"===i)throw Error(`Cannot switch variant: ${e} was edited outside the preview, and switching would overwrite that edit. Choose the option that is shown, or close the comparison with \`phoenix variants --close\`, which keeps the edit`);this.props.logger.warn(M(e))}let s=[...r.keys()].map(e=>({fileName:e,original:this.baseline.get(e)??null,previous:this.applied.has(e)?this.applied.get(e)??null:this.baseline.get(e)??null,applied:t.has(e)?t.get(e)??null:this.baseline.get(e)??null}));await e(n(this.props.projectRoot,".phoenix"),{recursive:!0}),await C(n(this.props.projectRoot,j),JSON.stringify(s));let o=new Map(this.applied);try{for(let e of s){let t=r.get(e.fileName);void 0!==t&&await C(t,e.applied)}}catch(e){for(let[e,t]of r)await C(t,o.has(e)?o.get(e)??null:this.baseline.get(e)??null);throw await C(n(this.props.projectRoot,j),JSON.stringify([...o].map(([e,t])=>({fileName:e,original:this.baseline.get(e)??null,applied:t})))),e}for(let[e,i]of(this.applied.clear(),t))this.applied.set(e,i);this.props.onFilesChanged(s.map(e=>({fileName:e.fileName,content:e.applied})))}}
1
+ import{mkdir as e,readFile as t,realpath as i,rename as a,rm as r,writeFile as s}from"node:fs/promises";import{dirname as o,join as n,relative as l,resolve as p,sep as c}from"node:path";import h from"promise-queue";import{z as d}from"zod";import{RawProjectFiles as f,RuntimeReferenceStore as m,TextFile as w,buildPhoenixDefinitions as u,isTextFile as g,parseApplicationFiles as v}from"#package/application-spec";import{generateAssistantPrompt as y,getAllPhxDefinitions as b}from"#package/domain";import{readApplicationFiles as S}from"../application-spec/application-spec-file-reader.js";import{swcEvalExpressionParser as F,swcModuleAnalyzer as N}from"../application-spec/swc-module-analyzer.js";let k=".phoenix/variant-recovery.json",j=d.array(d.object({fileName:d.string(),original:d.string().nullable(),applied:d.string().nullable(),previous:d.string().nullable().optional()})),E=e=>!e.includes("\\")&&!e.split("/").some(e=>".."===e||"."===e||""===e)&&(/^spec\/(?!admin\/).+\.yaml$/.test(e)||/^src\/(?:components|transformers|handlers|elements|_[^/]+)\/.+\.tsx?$/.test(e)),M=e=>`Left ${e} as it is: it was edited outside the variant comparison, so restoring the baseline would overwrite that edit. Review the file and remove what the option added to it`,$=async e=>{try{return await t(e,"utf8")}catch(e){if(e instanceof Error&&"code"in e&&"ENOENT"===e.code)return null;throw e}},C=async(t,i)=>{if(null===i)return void await r(t,{force:!0});await e(o(t),{recursive:!0});let n=`${t}.variant-${crypto.randomUUID()}`;try{await s(n,i),await a(n,t)}finally{await r(n,{force:!0})}},R=(e,t)=>{let i=v({rawProjectFiles:e,phxDefinitions:u(b())},{analyzer:N,evalExpressionParser:F,referenceStore:new m,logger:t});if(!i.ok)throw Error(`Cannot apply variant: ${i.errors.map(e=>`[${e.code}] ${e.message}`).join("\n")}`);let{configurator:a,admin:r,appMetadata:s,infra:o,dataSpec:n}=i.value.applicationSpec,l=i.value.categorizedFiles,p=new Set([...l.webhooks,...l.expressions,...l.actions,...l.invariants,...l.migrations,...l.adminMigrations,...l.adminExpressions,...l.adminInvariants,...l.handlers.filter(e=>"pinned"===e.webhookMembership||"named-handler"===e.webhookMembership),...l.components.filter(e=>"pinned"===e.webhookMembership),...l.adminComponents.filter(e=>"pinned"===e.webhookMembership)].flatMap(e=>[e.file.name,...e.deps]));return JSON.stringify({webhookFiles:e.files.filter(g).filter(e=>p.has(e.name)).sort((e,t)=>e.name.localeCompare(t.name)),appMetadata:s,infra:o,dataSpec:n,model:a.latestModel,schema:a.configurationSchema,dataSchemas:a.dataSchemas,adminModel:r.latestModel,adminSchema:r.configurationSchema,assistant:a.assistant?.sdl,assistantSettings:a.assistantServerSettings,assistantPrompt:a.assistant?y(a.assistant):null},(e,t)=>t instanceof Map?[...t.entries()]:t)};export class VariantFileSession{props;queue=new h(1,1/0);applied=new Map;baseline=new Map;contract;settled=!1;constructor(e){for(let t of(this.props=e,e.rawFiles.files))g(t)&&E(t.name)&&this.baseline.set(t.name,t.content);this.contract=R(e.rawFiles,e.logger)}static async create(e){await VariantFileSession.recover(e.projectRoot,e.logger);let t=await S({projectRoot:e.projectRoot,envs:{}});return new VariantFileSession({...e,rawFiles:t})}static async recover(e,t){let i=await $(n(e,k));if(null!==i){for(let a of j.parse(JSON.parse(i))){let i=await VariantFileSession.resolveFile(e,a.fileName),r=await $(i);if(r!==a.applied&&r!==a.original&&r!==a.previous){t.warn(M(a.fileName));continue}await C(i,a.original)}await r(n(e,k),{force:!0})}}static async resolveFile(e,t){if(!E(t))throw Error(`Cannot override ${t}: variants support frontend spec and TypeScript files only. Keep server code, dependencies, environment files and assets unchanged`);let a=await i(e),r=p(a,t),s=r;for(;;)try{let e=await i(s),r=l(a,e);if(".."===r||r.startsWith(`..${c}`))throw Error(`Cannot override ${t}: its symbolic link leaves the project`);if(e!==s)throw Error(`Cannot override ${t}: it uses a symbolic link. Variant edits require regular files so restoration preserves the original file`);break}catch(e){if(!(e instanceof Error&&"code"in e&&"ENOENT"===e.code))throw e;s=o(s)}return r}getFiles(){return[...this.baseline].map(([e,t])=>({fileName:e,content:t}))}apply(e){return this.queue.add(async()=>{if(this.settled)throw Error("This variant comparison has already ended");let t=new Map;for(let i of e){if(await VariantFileSession.resolveFile(this.props.projectRoot,i.fileName),t.has(i.fileName))throw Error(`Cannot apply variant: ${i.fileName} is specified twice`);t.set(i.fileName,i.content)}if(t.size>0){let e=this.props.rawFiles.files.filter(e=>!t.has(e.name));for(let[i,a]of t)null!==a&&e.push(w(i,a));if(R(f(e),this.props.logger)!==this.contract)throw Error("Cannot apply variant: it changes the model, schemas, data or deployment settings. Variants must need no server preparation")}await this.writeTarget(t,"refuse")})}finish(e){return this.queue.add(async()=>{this.settled||(e||await this.writeTarget(new Map,"keep"),await r(n(this.props.projectRoot,k),{force:!0}),this.settled=!0)})}async writeTarget(t,i){let a=new Set([...this.applied.keys(),...t.keys()]);if(0===a.size)return;let r=new Map;for(let e of a){let t=await VariantFileSession.resolveFile(this.props.projectRoot,e),a=this.applied.has(e)?this.applied.get(e):this.baseline.get(e)??null;if(await $(t)===a){r.set(e,t);continue}if("refuse"===i)throw Error(`Cannot switch variant: ${e} was edited outside the preview, and switching would overwrite that edit. Choose the option that is shown, or close the comparison with \`phoenix variants --close\`, which keeps the edit`);this.props.logger.warn(M(e))}let s=[...r.keys()].map(e=>({fileName:e,original:this.baseline.get(e)??null,previous:this.applied.has(e)?this.applied.get(e)??null:this.baseline.get(e)??null,applied:t.has(e)?t.get(e)??null:this.baseline.get(e)??null}));await e(n(this.props.projectRoot,".phoenix"),{recursive:!0}),await C(n(this.props.projectRoot,k),JSON.stringify(s));let o=new Map(this.applied);try{for(let e of s){let t=r.get(e.fileName);void 0!==t&&await C(t,e.applied)}}catch(e){for(let[e,t]of r)await C(t,o.has(e)?o.get(e)??null:this.baseline.get(e)??null);throw await C(n(this.props.projectRoot,k),JSON.stringify([...o].map(([e,t])=>({fileName:e,original:this.baseline.get(e)??null,applied:t})))),e}for(let[e,i]of(this.applied.clear(),t))this.applied.set(e,i);this.props.onFilesChanged(s.map(e=>({fileName:e.fileName,content:e.applied})))}}
@@ -0,0 +1 @@
1
+ export { isInsideGitRepository } from './is-inside-git-repository.js';
@@ -0,0 +1 @@
1
+ export{isInsideGitRepository}from"./is-inside-git-repository.js";
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Whether a folder is inside a git work tree: the folder or one of its parents, up to the file-system root, holds a
3
+ * `.git` entry. The entry is a directory in a plain checkout and a file in a linked worktree or a submodule; both
4
+ * count. Only the file system is read, so the answer does not depend on git being installed.
5
+ */
6
+ export declare const isInsideGitRepository: (folder: string) => boolean;
@@ -0,0 +1 @@
1
+ import{existsSync as t,realpathSync as r}from"fs";import{dirname as e,join as i,resolve as o}from"path";export const isInsideGitRepository=f=>{let n=(t=>{let e=o(t);try{return r(e)}catch{return e}})(f);for(;;){if(t(i(n,".git")))return!0;let r=e(n);if(r===n)return!1;n=r}};
@@ -4,8 +4,10 @@ export { formatEnvContent, formatEnvLine } from './env-file.js';
4
4
  export { parseChangelog, getLatestVersion, getVersion, paginateVersions, getVersionNumbers, type ChangelogVersion, type PaginatedVersions, } from './changelog-parser.js';
5
5
  export { createDirectoryFromYaml, exists, scanFolderForFiles, syncChangedFiles, syncExistingFolders, validateFolders, writeFileIfNotExists, writeFilesIfNotExists, writeRawFiles, } from './file-system.js';
6
6
  export { FileLogger } from './file-logger.js';
7
+ export { isInsideGitRepository } from './git/index.js';
7
8
  export { type Logger, type CreateLoggerOptions, createLogger } from './logger.js';
8
9
  export { addWorkspaceOverrides, ensureWorkspaceInstallSettings, getLocalOverrides, getSdkPackages, getWorkspaceDir, hasLocalOverrides, readPackageJson, removeWorkspaceOverrides, } from './package-info.js';
10
+ export { naturalCompare } from './natural-compare.js';
9
11
  export { toPascalCase } from './pascal-case.js';
10
12
  export { readGitCommit } from './read-git-commit.js';
11
13
  export { type RunCommandProps, runCommand } from './run-command.js';
@@ -1 +1 @@
1
- export{askQuestion}from"./ask-question.js";export{checkBundleSizeBudgets}from"./check-bundle-size-budgets.js";export{formatEnvContent,formatEnvLine}from"./env-file.js";export{parseChangelog,getLatestVersion,getVersion,paginateVersions,getVersionNumbers}from"./changelog-parser.js";export{createDirectoryFromYaml,exists,scanFolderForFiles,syncChangedFiles,syncExistingFolders,validateFolders,writeFileIfNotExists,writeFilesIfNotExists,writeRawFiles}from"./file-system.js";export{FileLogger}from"./file-logger.js";export{createLogger}from"./logger.js";export{addWorkspaceOverrides,ensureWorkspaceInstallSettings,getLocalOverrides,getSdkPackages,getWorkspaceDir,hasLocalOverrides,readPackageJson,removeWorkspaceOverrides}from"./package-info.js";export{toPascalCase}from"./pascal-case.js";export{readGitCommit}from"./read-git-commit.js";export{runCommand}from"./run-command.js";export{uploadFilesWithPresignedUrls,readUploadLinks}from"./upload-utils.js";
1
+ export{askQuestion}from"./ask-question.js";export{checkBundleSizeBudgets}from"./check-bundle-size-budgets.js";export{formatEnvContent,formatEnvLine}from"./env-file.js";export{parseChangelog,getLatestVersion,getVersion,paginateVersions,getVersionNumbers}from"./changelog-parser.js";export{createDirectoryFromYaml,exists,scanFolderForFiles,syncChangedFiles,syncExistingFolders,validateFolders,writeFileIfNotExists,writeFilesIfNotExists,writeRawFiles}from"./file-system.js";export{FileLogger}from"./file-logger.js";export{isInsideGitRepository}from"./git/index.js";export{createLogger}from"./logger.js";export{addWorkspaceOverrides,ensureWorkspaceInstallSettings,getLocalOverrides,getSdkPackages,getWorkspaceDir,hasLocalOverrides,readPackageJson,removeWorkspaceOverrides}from"./package-info.js";export{naturalCompare}from"./natural-compare.js";export{toPascalCase}from"./pascal-case.js";export{readGitCommit}from"./read-git-commit.js";export{runCommand}from"./run-command.js";export{uploadFilesWithPresignedUrls,readUploadLinks}from"./upload-utils.js";
@@ -12,12 +12,14 @@ export declare const useConfiguratorRawAccessService: () => AccessService | null
12
12
  export declare const useAdminRawAccessService: () => AccessService | null;
13
13
  export declare const useConfiguratorRawAccessInfo: () => {
14
14
  raw: string;
15
+ access: import("@salsita-ai/contracts/api").AccessLevel;
15
16
  viewMode: boolean;
16
17
  revisionId: string | undefined;
17
18
  configurationId: string;
18
19
  } | null;
19
20
  export declare const useAdminRawAccessInfo: () => {
20
21
  raw: string;
22
+ access: import("@salsita-ai/contracts/api").AccessLevel;
21
23
  viewMode: boolean;
22
24
  revisionId: string | undefined;
23
25
  configurationId: string;
@@ -1,8 +1,11 @@
1
- import type { AclConfig, DomainConfig, PersistenceConfig } from '#package/domain';
1
+ import type { AclConfig, AnyDomainComponentOptic, DomainConfig, PersistenceConfig } from '#package/domain';
2
2
  interface DomainApplicationProps {
3
3
  readonly deploymentId: string;
4
4
  readonly persistenceConfig: PersistenceConfig;
5
- readonly domainConfig: DomainConfig<any, any, any, any, any, any>;
5
+ /** The domain config as the runtime spec holds it: component optics already validated, never project modules. */
6
+ readonly domainConfig: Omit<DomainConfig<any, any, any, any, any, any>, 'componentOptics'> & {
7
+ readonly componentOptics: readonly AnyDomainComponentOptic[];
8
+ };
6
9
  readonly canCreate: AclConfig['canCreate'];
7
10
  readonly enableAdminRelease: boolean;
8
11
  }
@@ -1,6 +1,6 @@
1
1
  export declare const useConfiguratorSpec: () => import("../../../domain/index.js").ApplicationConfiguratorSpec;
2
2
  /** The application spec's `assistant` manifest, or nothing when the spec has no `assistant` section. */
3
- export declare const useSpecAssistant: () => import("../../../domain/index.js").AssistantManifest | null;
3
+ export declare const useSpecAssistant: () => Required<import("../../../domain/index.js").AssistantManifest> | null;
4
4
  export declare const useSpecTextLanguages: () => readonly string[];
5
5
  export declare const useSpecHandlerHashes: () => Record<string, string>;
6
6
  export declare const useSpecHandlers: () => readonly import("../../../domain/index.js").HandlerRegistration<any, any>[];
@@ -1,7 +1,7 @@
1
1
  import type { $DomainEntity, ApplicationConfig, DomainEntity, RegistrableTransformer, WebComponentOptions } from '#package/domain';
2
2
  import type { ApplicationRuntime } from '../runtime/react-runtime.js';
3
3
  import { type WebComponentApi } from '../web-component/index.js';
4
- export declare const createMockApplicationRuntime: <ENTITIES extends DomainEntity<string>, ALLOWED_ROOT_ENTITIES extends ENTITIES, $MAP extends Record<ENTITIES['type'], $DomainEntity<ENTITIES>>, NAVIGATION_STATES extends string, VIEW_STATES extends string, TOOL_STATES extends string, EXPORT_STATES extends string, CHAT_CONTEXT extends Record<string, unknown>, PUBLISHED_DATA extends Record<string, unknown>, SESSION_DATA extends Record<string, unknown>, FRONTEND_DATA extends Record<string, unknown>, ADMIN_ENTITIES extends DomainEntity<string>, ADMIN_ALLOWED_ROOT_ENTITIES extends ADMIN_ENTITIES, ADMIN_$MAP extends Record<ADMIN_ENTITIES['type'], $DomainEntity<ADMIN_ENTITIES>>, ADMIN_NAVIGATION_STATES extends string, ADMIN_VIEW_STATES extends string>(_cfg: ApplicationConfig<ENTITIES, ALLOWED_ROOT_ENTITIES, $MAP, NAVIGATION_STATES, VIEW_STATES, TOOL_STATES, EXPORT_STATES, CHAT_CONTEXT, PUBLISHED_DATA, SESSION_DATA, FRONTEND_DATA, ADMIN_ENTITIES, ADMIN_ALLOWED_ROOT_ENTITIES, ADMIN_$MAP, ADMIN_NAVIGATION_STATES, ADMIN_VIEW_STATES>, mocks: {
4
+ export declare const createMockApplicationRuntime: <ENTITIES extends DomainEntity<string>, ALLOWED_ROOT_ENTITIES extends ENTITIES, $MAP extends Record<ENTITIES['type'], $DomainEntity<ENTITIES>>, NAVIGATION_STATES extends string, VIEW_STATES extends string, TOOL_STATES extends string, EXPORT_STATES extends string, CHAT_CONTEXT extends Record<string, unknown>, PUBLISHED_DATA extends Record<string, unknown>, SESSION_DATA extends Record<string, unknown>, FRONTEND_DATA extends Record<string, unknown>, ADMIN_ENTITIES extends DomainEntity<string>, ADMIN_ALLOWED_ROOT_ENTITIES extends ADMIN_ENTITIES, ADMIN_$MAP extends Record<ADMIN_ENTITIES['type'], $DomainEntity<ADMIN_ENTITIES>>, ADMIN_NAVIGATION_STATES extends string, ADMIN_VIEW_STATES extends string>(config: ApplicationConfig<ENTITIES, ALLOWED_ROOT_ENTITIES, $MAP, NAVIGATION_STATES, VIEW_STATES, TOOL_STATES, EXPORT_STATES, CHAT_CONTEXT, PUBLISHED_DATA, SESSION_DATA, FRONTEND_DATA, ADMIN_ENTITIES, ADMIN_ALLOWED_ROOT_ENTITIES, ADMIN_$MAP, ADMIN_NAVIGATION_STATES, ADMIN_VIEW_STATES>, mocks: {
5
5
  frontendData: FRONTEND_DATA;
6
6
  publishedData: PUBLISHED_DATA;
7
7
  sessionData: SESSION_DATA;
@@ -1 +1 @@
1
- import{memoOnce as e}from"@salsita-ai/common/utils";import{createDomainRuntime as t,createMockDomainRuntimeServices as o,createMockSessionContext as n}from"#package/domain";import{createCommonServicesSelectors as s}from"../common-services/index.js";import{createDomainApplicationContextSelectors as i}from"../domain-application-context/index.js";import{createIntegrationActions as a,createIntegrationSelectors as r,initializeIntegration as c}from"../integration/index.js";import{createRoutingActions as m,createRoutingSelectors as d,initializeRouting as l}from"../routing/index.js";import{SessionService as p,createSessionRuntimeActions as S,createSessionRuntimeSelectors as g,initializeSessionRuntime as v}from"../session/index.js";import{createMockWebComponentApi as u}from"../web-component/index.js";export const createMockApplicationRuntime=(C,x)=>{var f;let b,y,w,A,D,k,E,I,h,j,R,T,O,L,F,{sessionData:M,mode:U,role:V}=x,z={...C,createTransformers:e=>x.transformers.map(t=>t.transformer.register(e,t.priority??1/0))},q=o(),B=(f={webComponentOptions:x.webComponentOptions??z.mount.options,webComponentApi:x.webComponentApi??u()},w=v(),A=t({config:z,services:q,getExtensionSystems:e=>F[e].getInitializableSystems()}),D=new Set,k=()=>{D.forEach(e=>{e()})},b=c({actions:E=a({setIntegration:e=>{b=e(b),k()}})}),I=r({getState:()=>({integration:b})}),h=m({setRouting:e=>{y=e(y),k()}}),y=l(),j=d({getState:()=>({...A.getState(),routing:y}),actions:h,accessActions:A.actions.access,loadedDataActions:A.actions.loadedData,domainServicesSelectors:A.selectors.domainServices,overridesSelectors:A.selectors.overrides}),R=s({getState:()=>({...A.getState(),session:w}),environmentSelectors:A.selectors.environment,specSelectors:A.selectors.spec,accessSelectors:A.selectors.access,domainServicesSelectors:A.selectors.domainServices,webComponentOptions:f.webComponentOptions,webComponentApi:f.webComponentApi,getSessionService:()=>L(),routingSelectors:j}),T=S({setSessionRuntime:e=>{w=e(w),k()}}),O=g({getState:()=>({...A.getState(),session:w}),sessionContextSelectors:A.selectors.sessionContext}),L=e(()=>new p({getLogger:()=>A.selectors.domainServices.getLogger(),getAnalyticsService:()=>A.selectors.domainServices.getAnalyticsService(),getUnauthenticatedClient:R.getUnauthenticatedClient,environmentSelectors:A.selectors.environment,sessionActions:T,setSessionContext:A.actions.sessionContext.setSessionContext,sessionSelectors:O,specSelectors:A.selectors.spec})),F={configurator:i({applicationType:"configurator",commonServicesSelectors:R,domainServicesSelectors:A.selectors.domainServices,domainContextSelectors:A.selectors.domainContext.configurator,getApplicationRuntimeExtensions:()=>[]}),admin:i({applicationType:"admin",commonServicesSelectors:R,domainServicesSelectors:A.selectors.domainServices,domainContextSelectors:A.selectors.domainContext.admin,getApplicationRuntimeExtensions:()=>[]})},{subscribe:e=>{D.add(e);let t=A.subscribe(e);return()=>{D.delete(e),t()}},getState:()=>({...A.getState(),integration:b,routing:y,session:w}),selectors:{...A.selectors,commonServices:R,integration:I,routing:j,session:O,domainApplicationContext:F},actions:{...A.actions,integration:E,routing:h,session:T}});return B.actions.sessionContext.setSessionContext(n(V,M)),B.actions.access.setConfiguratorAccessInfo({raw:"mock-access-token",viewMode:"read"===U,revisionId:void 0,configurationId:"mock"}),B.actions.domainData.setDomainData({publishedData:x.publishedData,frontendData:x.frontendData,backendData:x.backendData}),B.actions.loadedData.completeConfiguratorLoad({initialRevisionId:"mock-revision",initialEntities:x.entities,modelVersion:z.domain.domainFactory.modelVersion,rootEntityType:x.rootEntityType,schemaIdentity:z.domain.domainFactory}),B};
1
+ import{memoOnce as e}from"@salsita-ai/common/utils";import{AccessLevel as t}from"@salsita-ai/contracts/api";import{createDomainRuntime as o,createMockDomainRuntimeServices as n,createMockSessionContext as s}from"#package/domain";import{createCommonServicesSelectors as i}from"../common-services/index.js";import{createDomainApplicationContextSelectors as a}from"../domain-application-context/index.js";import{createIntegrationActions as r,createIntegrationSelectors as c,initializeIntegration as m}from"../integration/index.js";import{createRoutingActions as d,createRoutingSelectors as p,initializeRouting as l}from"../routing/index.js";import{SessionService as S,createSessionRuntimeActions as g,createSessionRuntimeSelectors as v,initializeSessionRuntime as u}from"../session/index.js";import{createMockWebComponentApi as f}from"../web-component/index.js";export const createMockApplicationRuntime=(C,x)=>{var b;let w,y,A,D,k,E,I,R,h,j,O,T,L,F,M,{sessionData:U,mode:V,role:z}=x,q=n(),B=(b={webComponentOptions:x.webComponentOptions??C.mount.options,webComponentApi:x.webComponentApi??f()},A=u(),D=o({config:C,services:q,getExtensionSystems:e=>M[e].getInitializableSystems()}),k=new Set,E=()=>{k.forEach(e=>{e()})},w=m({actions:I=r({setIntegration:e=>{w=e(w),E()}})}),R=c({getState:()=>({integration:w})}),h=d({setRouting:e=>{y=e(y),E()}}),y=l(),j=p({getState:()=>({...D.getState(),routing:y}),actions:h,accessActions:D.actions.access,loadedDataActions:D.actions.loadedData,domainServicesSelectors:D.selectors.domainServices,overridesSelectors:D.selectors.overrides}),O=i({getState:()=>({...D.getState(),session:A}),environmentSelectors:D.selectors.environment,specSelectors:D.selectors.spec,accessSelectors:D.selectors.access,domainServicesSelectors:D.selectors.domainServices,webComponentOptions:b.webComponentOptions,webComponentApi:b.webComponentApi,getSessionService:()=>F(),routingSelectors:j}),T=g({setSessionRuntime:e=>{A=e(A),E()}}),L=v({getState:()=>({...D.getState(),session:A}),sessionContextSelectors:D.selectors.sessionContext}),F=e(()=>new S({getLogger:()=>D.selectors.domainServices.getLogger(),getAnalyticsService:()=>D.selectors.domainServices.getAnalyticsService(),getUnauthenticatedClient:O.getUnauthenticatedClient,environmentSelectors:D.selectors.environment,sessionActions:T,setSessionContext:D.actions.sessionContext.setSessionContext,sessionSelectors:L,specSelectors:D.selectors.spec})),M={configurator:a({applicationType:"configurator",commonServicesSelectors:O,domainServicesSelectors:D.selectors.domainServices,domainContextSelectors:D.selectors.domainContext.configurator,getApplicationRuntimeExtensions:()=>[]}),admin:a({applicationType:"admin",commonServicesSelectors:O,domainServicesSelectors:D.selectors.domainServices,domainContextSelectors:D.selectors.domainContext.admin,getApplicationRuntimeExtensions:()=>[]})},{subscribe:e=>{k.add(e);let t=D.subscribe(e);return()=>{k.delete(e),t()}},getState:()=>({...D.getState(),integration:w,routing:y,session:A}),selectors:{...D.selectors,commonServices:O,integration:R,routing:j,session:L,domainApplicationContext:M},actions:{...D.actions,integration:I,routing:h,session:T}}),G=B.getState().spec;return B.actions.spec.updateSpec({...G,configurator:{...G.configurator,createTransformers:e=>x.transformers.map(t=>t.transformer.register(e,t.priority??1/0))}}),B.actions.sessionContext.setSessionContext(s(z,U)),B.actions.access.setConfiguratorAccessInfo({raw:"mock-access-token",access:"read"===V?t.Read:t.Owner,viewMode:"read"===V,revisionId:void 0,configurationId:"mock"}),B.actions.domainData.setDomainData({publishedData:x.publishedData,frontendData:x.frontendData,backendData:x.backendData}),B.actions.loadedData.completeConfiguratorLoad({initialRevisionId:"mock-revision",initialEntities:x.entities,modelVersion:C.domain.domainFactory.modelVersion,rootEntityType:x.rootEntityType,schemaIdentity:C.domain.domainFactory}),B};
@@ -3,6 +3,7 @@ export declare const getAccessTokenFromLocalStorage: (configurationId: string) =
3
3
  export declare const removeAccessTokenFromLocalStorage: (configurationId: string) => void;
4
4
  export declare const getAccessInfo: (configurationId: string, accessToken?: string) => {
5
5
  raw: string;
6
+ access: import("@salsita-ai/contracts/api").AccessLevel;
6
7
  viewMode: boolean;
7
8
  revisionId: string | undefined;
8
9
  configurationId: string;